Сохранять дополнительную информацию в plist каждый раз, когда я запускаю приложение?(iphone)
-
05-07-2019 - |
Вопрос
Мое приложение для iPhone записывает пары ключ-значение в словарь в файле plist.По сути, я сохраняю счет пользователя, когда он играет в игру.Все это прекрасно, но каждый раз, когда я запускаю приложение и получаю новые оценки, новые значения сохраняются поверх старых.Как мне добавлять информацию в список plist каждый раз, когда пользователь обращается к приложению, вместо того, чтобы перезаписывать файл?Я хочу сохранить все результаты, а не только самые последние.
код:
-(void)recordValues:(id)sender {
//read "propertyList.plist" from application bundle
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path
stringByAppendingPathComponent:@"propertyList.plist"];
dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
//create an NSNumber object containing the
//float value userScore and add it as 'score' to the dictionary.
NSNumber *number=[NSNumber numberWithFloat:userScore];
[dictionary setObject:number forKey:@"score"];
//dump the contents of the dictionary to the console
for (id key in dictionary) {
NSLog(@"memory: key=%@, value=%@", key, [dictionary
objectForKey:key]);
}
//write xml representation of dictionary to a file
[dictionary writeToFile:@"/Users/rthomas/Sites/propertyList.plist" atomically:NO];
}
Решение
Вы присваиваете объекту номер для ключевой оценки
NSNumber *number=[NSNumber numberWithFloat:userScore];
[dictionary setObject:number forKey:@"score"];
Вместо этого то, что вы хотите сделать, это иметь массив или что-то в этом роде, так что
NSNumber *number=[NSNumber numberWithFloat:userScore];
NSMutableArray *array=[dictionary objectForKey:@"score"]
[array addObject:number]
[dictionary setObject:array forKey:@"score"]
это должно сделать то, о чем вы просите
Другие советы
Сначала вы хотите загрузить старые значения в NSArray или NSDictionary, как сказал Дэниел.
Вы добавляете новое значение в коллекцию.(может быть, сделать какую-нибудь сортировку или что-то еще)
Затем вы записываете новую коллекцию обратно на диск.