NSUserDefaults standardUserDefaults не возвращает результатов

#objective-c #nsuserdefaults

#objective-c #nsuserdefaults

Вопрос:

Я создал settings.bundle и добавил несколько элементов. Теперь я пытаюсь получить доступ к их значениям из моего приложения.

Я использую стандартный пример Apple:

 - (void)applicationDidFinishLaunching:(UIApplication *)application 
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [self setShouldPlaySounds:[defaults boolForKey:@"play_sounds_preference"]]; 
    // Finish app initialization...
}
  

Я изменил play_sound_preferences свой идентификатор в пакете. При запуске моего приложения ошибка не возвращается, но значение равно 0, хотя я установил значение равным 10. Это подтверждается: когда я просматриваю настройки, ползунок находится на отметке 10%.

Я что-то упускаю?

Вот фактический блок кода:

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    searchRadius = [defaults floatForKey:@"SearchRadius"];
    returnResults = [defaults integerForKey:@"RecordReturnCount"];
    // ...
}
  

Ответ №1:

Без какого-либо другого кода я могу только предположить, что вы неправильно устанавливаете searchRadius и RecordReturnCount. Они были бы примерно такими:

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setFloat: searchRadius forKey: @"SearchRadius"];
[defaults setInteger: returnResults forKey: @"RecordReturnCount"];
  

Прошло некоторое время с тех пор, как я использовал это, но я не помню, чтобы это было так сложно. Если вы посмотрите в свои настройки, вы должны увидеть com.ВАША КОМПАНИЯ ЗДЕСЬ.YOURPROGRAM.plist — это тривиально проверить, чтобы увидеть, где вы, возможно, ошиблись.

РЕДАКТИРОВАТЬ: Кстати, я никогда не использовал пакет для инициализации настроек — обычно у меня будет флаг с именем @»Initialized» — если вы обращаетесь к нему и он возвращает NO, значит, вы никогда не настраивали свои пользовательские настройки и можете их настроить … обязательно установите для @»Initialized» значение YES!!! Это устранило бы необходимость в пакете настроек.

Комментарии:

1. searchRadius = [[NSUserDefaults standardUserDefaults] floatForKey:@»searchRadius»]; returnResults = [[NSUserDefaults standardUserDefaults ] integerForKey:@»RecordReturnCount»];