2012-01-30 2 views
0

내 cocos2d 게임의 높은 점수는 plist에 기록됩니다. 내가 plist에 갈 때마다 단 한 줄의 데이터 만 쓰여지고 plist에 쓸 때마다 이전 데이터를 덮어 씁니까?각 plist에 둘 이상의 데이터 행 쓰기

Heres는 내 PLIST에 쓰기에 대한 내 코드 :

새 비어있는 NSDictionary마다 시간을 만드는 때문이다
-(void)writeToPlistHighScore { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *filePath = [NSString stringWithFormat:@"%@/%@",documentsDirectory,@"HighScore.plist"]; 
    NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] init]; 

    [plistDict setObject:[NSNumber numberWithInteger:scoreNumber] forKey:@"Level2_HighScore"]; 
    [plistDict writeToFile:filePath atomically: YES]; 
    NSLog(@"HighScore wrote: %i", HighScore); 
} 

답변

4

. 그런 다음 하나의 점수를 추가하고 그 사전을 저장하십시오.

당신이 사전은 기존의 최고 기록을로드하도록 기존의 plist로 사전을 초기화 할 필요가

: 작업이 완료되면

또한
NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile: writeToFile:filePath]; 

// if dictionary is nil the highscore file doesn't exist yet 
if (plistDict == nil) 
    plistDict = [[NSMutableDictionary alloc] init]; 

이 사전을 해제하는 것을 잊지 마세요! 지금 당신은 기억을 새기고 있습니다.

[plistDict release]; 
+0

감사합니다! 완벽하게 작동합니다. – mattblessed

관련 문제