Написать / прочитать файл plist iPhone - PullRequest
6 голосов
/ 17 октября 2010

У меня есть plist в моем приложении для iphone, и я хочу прочитать и написать целое число от моего сингла до и сформировать его.

У меня есть это, чтобы прочитать это:

 scoreData *score = [scoreData sharedData];

 filePath = @"stats.plist";
 NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

 score.highScore = [plistDict objectForKey:@"score"];

Тогда написать ему:

scoreData *score = [scoreData sharedData];

 NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

 [plistDict setValue:score.highScore forKey:@"score"];
 [plistDict writeToFile:filePath atomically: YES];

Я получаю ошибку в обеих частях:

Неправильная форма преобразования objc_object * в int

и

Неверное преобразование формы int в objc_object

Я ценю любую помощь, спасибо.

Ответы [ 2 ]

7 голосов
/ 17 октября 2010

Две вещи:

  1. Когда вы устанавливаете ключ в словаре, вы, вероятно, после setObject:forKey: вместо setValue:forKey:.

  2. Словари содержат объекты (типа id или NSString* или ваши собственные объекты Obj-C), а не примитивные типы (int, BOOL и т. Д.).

Когда вы хотите сохранить примитивный тип в коллекции Obj-C, вы можете «обернуть» его в объект, подобный этому:

[plistDict setObject:[NSNumber numberWithInt:score.highScore] forKey:@"score"];

И получитьэто обратно так:

score.highScore = [[pListDict objectForKey:@"score"] intValue];
0 голосов
/ 17 октября 2010

Посмотрите, ответит ли это на ваш вопрос:

Как создать новый список пользовательских свойств в приложениях iPhone

Вы можете использовать NSUserDefaults, но, конечно, highScore на самом деле не используется по умолчанию.

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