Проблемы с загрузкой из NSUserDefaults - PullRequest
1 голос
/ 08 декабря 2011

У меня очень странная проблема, когда мое приложение загружается из NSUserDefaults.Это код в моем appDelegate:

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSString *user = [[NSString alloc]initWithString:[defaults objectForKey:@"_settingsUsername"]];
 NSString *password = [[NSString alloc]initWithString:[defaults objectForKey:@"_settingsPassword"]];
 NSString *instance = [[NSString alloc]initWithString:[defaults objectForKey:@"_settingsInstance"]];

Ошибка заключается в следующем: [NSPlaceholderString initWithString:]: nil аргумент 'Это очень странно, потому что я добавил в Settings.bundle-> Root.plist значения по умолчаниювсе поля выше.

Ответы [ 3 ]

1 голос
/ 08 декабря 2011

Как ни странно, так и должно быть - поначалу меня это тоже смутило.

Полагаю, следует помнить, что вы можете использовать NSUserDefaults без Settings.bundle, так что это не может быть единственным способом установки значений по умолчанию.

Apple предоставляет пример кода, AppPrefs , который показывает, как скопировать значение по умолчанию из настроек в NSUserDefaults.

1 голос
/ 08 декабря 2011

Почему бы вам просто не использовать это?

NSUserDefaults *defaults = [NSUserDefaults standarduserDefaults];
NSString *user = [defaults objectForKey:@"_settingsUsername"];
NSString *password = [defaults objectForKey:@"_settingsPassword"];
NSString *instance = [defaults objectForKey:@"_settingsInstance"];

И убедиться, что есть объекты для этих ключей.

надеюсь, что это поможет

0 голосов
/ 08 декабря 2011

Думаю, проблема в том, что если пользователь еще не вошел в настройки вашего приложения, то все значения, возвращенные с NSUserDefaults для этих ключей, равны нулю.Вам нужно разобраться с этим делом и действовать соответственно - возможно, зайдя в Settings.bundle и выбрав значение по умолчанию, которое вы там указали.Я бы просто написал метод, который получает значение для ключа, и если NSUserDefaults возвращает nil, он обрабатывает все запросы пакета настроек для вас.

...