2012-01-30 66 views
0

我的cocos2d游戏高分被写入plist。每当我进入plist时,只写入一行数据,每次写入plist它都会覆盖以前的数据?向每位plist写入多行数据

继承人我写我的plist代码:

-(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

那是因为你正在创建一个新的空NSDictionary的每一次。然后您添加一个分数并保存该字典。

需要初始化你的字典与现有的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 2012-01-30 23:38:36