2011-08-05 4 views
2

나는 plist를 만든 응용 프로그램을 개발 중입니다. 데이터를 추가하고 있습니다.하지만 일어나는 일은 매번 데이터를 덮어 쓰고 이전 데이터 분실되었다. 나는 내가 바위를 추가 할 때 다음에 바위라고하는 이름을 하나 추가한다고 가정 할 때, 바위는 바위로 덮어 씌워 지지만, 원하는 것은 내 plist가 바위와 바위를 포함해야한다는 것입니다. plist에있는 데이터를 추가하고 있습니다. 사용자 항목 .... 여기동적으로 plist에 데이터 추가 및 tableview 셀 채우기

아래에있는 내 코드는 ...

-(IBAction) myplist:(id) sender//the data is saved in a plist by clicking on this button 
{ 
NSLog(@"mylist Clicked");  

NSMutableArray *array = [[NSMutableArray alloc] init]; 

[array addObject:searchLabel.text]; 

    // get paths from root direcory 

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 

// get documents path 

NSString *documentsPath = [paths objectAtIndex:0]; 

// get the path to our Data/plist file 

NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 



// This writes the array to a plist file. If this file does not already exist, it creates a new one. 

    [array writeToFile:plistPath atomically: TRUE]; 
} 

답변

0

코드에 약간의 수정을 가하면이 기능이 도움이 될 것이라고 생각합니다.

NSLog(@"mylist Clicked");  
NSMutableArray *array = [[NSMutableArray alloc] init]; 


// get paths from root direcory 

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 

// get documents path 

NSString *documentsPath = [paths objectAtIndex:0]; 

// get the path to our Data/plist file 

NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 


//This copies objects of plist to array if there is one 
[array addObjectsFromArray:[NSArray arrayWithContentsOfFile:plistPath]]; 
[array addObject:searchLabel.text]; 
// This writes the array to a plist file. If this file does not already exist, it creates a new one. 

[array writeToFile:plistPath atomically: TRUE]; 
+0

고마워요 당신이 소니 그것 근무 .. 그리고 그것을 정확히 내가 원했던 ...하지만 지금은 .. 더 많은 문제가 시뮬레이터에서 작동하지만 .. 어떻게 장치에서 실행하게 .. 나를 도와주세요. – Ranjit

+0

안녕하세요 sony, 나는 한가지 더 묻고 싶습니다. plist에 3 개의 값만 추가하고 나중에 사용자가 더 추가하면 덮어 쓸 것입니다. 어떻게해야합니까? – Ranjit

0

봅니다 PLIST에 데이터를 저장하는 순서를 사용합니다.

+0

감사합니다 Vanya..for 귀하의 회신 .. 내게 내가 원하는 와트를 얻을 수 있도록 내 이전 코드에서 변경해야 할 사항을 알려주십시오 ..... 나는 그것에 대해 ..... – Ranjit

+0

Sony 솔루션을 사용해 보셨습니까? 괜찮아. – Vanya

+0

안녕하세요 vanya ... 내가 시도 .. .sonys 솔루션을 시도하고 잘 .. 시뮬레이터 .. 나는 우리가 아이폰 장치에서도 실행할 수 있도록 변경 해야할지 알고 싶다. – Ranjit

0

당신은 추가하지 못할

1. ,하는 NSMutableDictionary/NSMutableArray를

2로 PLIST에서 이전 데이터를 검색 NSMutableDictionary/NSMutableArray를

3에 새 레코드를 추가, 파일에 쓸 수 데이터를 Plist로 보냅니다. 매번 writeToFile을 수행하기 때문에 plist 파일이 다시 작성됩니다. 따라서 처음에 저장된 데이터는 거기에 저장되지 않습니다. 와트 u 욕망을 달성하는 유일한 방법은 plist에서 데이터 배열을 검색하는 것입니다. 그런 다음 새 데이터 객체를 배열에 추가합니다. 새로운 추가 된 배열로 디스크에 plist 파일을 다시 작성하십시오. 희망이 도움이됩니다.

+0

고마워 booleanBoy 귀하의 회신에 대한 .. 내가 위의 코드에서 변경해야 할게 내가 더 말해야 겠어, 왜냐하면, 내가 새로운 오 .. 오전 – Ranjit