В методе Application Delegate didFinishLaunching я использую следующий код для создания нового NSDictionary, который будет использоваться в качестве нового пакета настроек для пользователя:
NSNumber *testValue = (NSNumber*)[[NSUserDefaults standardUserDefaults] objectForKey:@"settingsversion"];
if (testValue == nil)
{
NSNumber *numNewDB = [NSNumber numberWithBool:NO];
NSNumber *numFirstUse = [NSNumber numberWithBool:YES];
NSDate *dateLastStatic = [NSDate date];
NSDate *dateLastMobile = [NSDate date];
NSNumber *numSettingsversion = [NSNumber numberWithFloat:1.0];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
numNewDB, @"newdb",
numFirstUse, @"firstuse",
numSettingsversion, @"settingsversion",
dateLastStatic, @"laststaticupdate",
dateLastMobile, @"lastmobileupdate",
nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Позже в другом ViewController я пытаюсь прочитать значение из того же словаря, сохраненного как NSUserDefaults - по крайней мере, я думал, что это будет, но я не получаю никакого действительного указателя объекта для желаемого члена lastUpdate назад :
в .h файле:
NSDate *lastUpdate;
в файле .m в функции-члене:
lastUpdate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"laststaticupdate"];
Даже если я распечатываю содержимое [NSUserDefaults standardUserDefaults], я получаю только это:
2010-04-29 15:13:22.322 myApp[4136:207] Content of UserDefaults: <NSUserDefaults: 0x11d340>
Это приводит меня к выводу, что в памяти нет стандартного словаря пользователя UserDefaults или его нельзя определить как такую структуру.
Редактировать: Каждый раз, когда я перезагружаю приложение на устройстве, проверка для testValue равна Nil, и я снова создаю словарь, но после одного запуска он должен быть постоянным на телефоне, верно?
Я делаю что-то не так между ними? У меня такое чувство, что я еще не совсем понял, как загружать и сохранять постоянные настройки для определенного приложения на iPhone.
Должен ли я что-нибудь сделать дополнительно к этому? Интегрировать файл settings.bundle в XCode или сохранить словарь вручную в папку «Документы»?
Может кто-нибудь помочь мне здесь? Большое спасибо!