#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»];