Я пытаюсь сохранить несколько свойств в plist, когда пользователь запускает приложение в первый раз, а затем мне нужно извлечь эти данные и показать их пользователю, когда пользователь перезапустит приложение, чтобы я не нужно снова запрашивать те же данные.
Полагаю, это должно быть очень прямолинейно, но, может быть, я что-то упустил.
Было бы неплохо, если бы кто-то мог указать мне пример кода для того же действия, было бы неплохо, если бы код сохранял и извлекал данные из словаря в plist и из plist в словарь.
Я заглянул в руководство по программированию списка свойств Apple и использовал код из данных списка чтения и записи свойств
http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PropertyLists/ReadWritePlistData/ReadWritePlistData.html#//apple_ref/doc/uid/10000048i-CH8-SW1
но, когда я перезапускаю свое приложение, я не возвращаю данные, которые я сохранил.
* EDIT *
Я добавляю некоторый код, чтобы кто-то мог указать, если я делаю какую-либо ошибку.
Я создал файл plist «Data.plist» в папке ресурсов моего проекта.
Так я сохраняю данные в одном из моих контроллеров представления
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"];
//NSString *error;
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"xxxxxx" forKey:@"phoneNumber"];
[dict setObject:@"password" forKey:@"password"];
[dict setObject:@"email" forKey:@"email"];
[dict writeToFile:finalPath atomically:NO];
Вот как я читаю данные в том же методе viewDidLoad контроллера представления, потому что я хочу загрузить данные с момента следующего запуска приложения.
NSDictionary *dictionary;
// read "Data.plist" from application bundle
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"];
dictionary = [NSDictionary dictionaryWithContentsOfFile:finalPath];
// dump the contents of the dictionary to the console
for (id key in dictionary) {
NSLog(@"bundle: key=%@, value=%@", key, [dictionary objectForKey:key]);
}
Перед сохранением в файл я могу сделать "po dict" на GDB и посмотреть, есть ли данные в файле
NSLog печатать следующую ошибку
Ошибка подтверждения: (cls), функция getName, файл /SourceCache/objc4_Sim/objc4-427.1.1/runtime/objc-runtime-new.m, строка 3939.
Потому что, когда я загружаю данные и делаю "словарь по" в GDB, он пуст