Сохранить дополнительную информацию в списке каждый раз, когда я запускаю приложение? (Iphone) - PullRequest
0 голосов
/ 29 июля 2009

Мое приложение iphone записывает пары ключ-значение в словарь в файле 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];
}

Ответы [ 2 ]

1 голос
/ 29 июля 2009

Сначала вы хотите загрузить старые значения в NSArray или NSDictionary, как сказал Дэниел.

Вы добавляете новое значение в коллекцию. (может быть, сделать сортировку или что-то еще)

Затем вы записываете новую коллекцию обратно на диск.

1 голос
/ 29 июля 2009

Вы устанавливаете объект в число для ключевой оценки

    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"]

это должно делать то, что вы просите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...