Запись более одного ряда данных в каждый список - PullRequest
0 голосов
/ 31 января 2012

мои рекорды в игре cocos2d записаны в список.Каждый раз, когда я вхожу в список, записывается только одна строка данных, каждый раз, когда я записываю в список, он перезаписывает предыдущие данные?

Вот мой код для записи в мой список:

-(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);
}

1 Ответ

4 голосов
/ 31 января 2012

Это потому, что вы каждый раз создаете новый пустой NSDictionary.Затем вы добавляете один балл и сохраняете этот словарь.

Вам необходимо инициализировать ваш словарь с существующим списком, чтобы словарь загружал существующие рекорды:

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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...