Я хочу установить некоторые начальные значения для моих ключей NSUserDefault, чтобы первый запуск приложения имел некоторые разумные начальные настройки. Я думал, что пробежал простой способ сделать это в комплекте приложений .plist, но теперь я не могу его найти. Любые идеи?
Как установить начальные значения для ключей NSUserDefault?
Ответ 1
Вы должны использовать метод registerDefaults
NSUserDefaults
. Подготовьте файл plist в своем комплекте, который содержит настройки по умолчанию, а затем используйте этот plist для регистрации значений по умолчанию.
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
Вы должны выполнить этот код при каждом запуске приложения. Он добавит эти значения в отдельный домен в иерархии по умолчанию пользователя. Всякий раз, когда пользовательские настройки по умолчанию для вашего приложения не предоставляют значение для определенного ключа, NSUserDefaults
возвращается в этот домен и извлекает из него значение.
Ответ 2
Если у вас много значений по умолчанию, используйте ola answer, в противном случае это полезно для нескольких параметров
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {
[defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];
// Set initial values
...
[defaults synchronize];
}
Ответ 3
if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
[[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];
[[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NB: не проверено, сделано из памяти
Ответ 4
-(void) loadDef
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
_removeAd=[userDefaults boolForKey:SAVE_AD_STATUS];
NSString* strDefSetting=[userDefaults stringForKey:SAVE_STATUS_ADSETTING];
if(strDefSetting==nil
||[strDefSetting isEqualToString:@""]
)
{
[email protected]"0.5";
}
_floatAdmob=strDefSetting.floatValue;//0.5;
}