2012-01-30 15 views
0

私のcocos2dゲームのハイスコアはplistに書き込まれます。私がplistに入るたびに、1行のデータしか書き込まれません。plistに書き込むたびに前のデータを上書きしますか?各plistに複数行のデータを書き込む

私のplistに書き込むためのHERESに私のコード:

-(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のを毎回作成しているためです。次に、スコアを1つ追加してその辞書を保存します。

あなたは辞書は既存のハイスコアをロードするように、既存の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

関連する問題