2012-01-30 67 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