Подтвердить что ты не робот

Как установить начальные значения для ключей NSUserDefault?

Я хочу установить некоторые начальные значения для моих ключей NSUserDefault, чтобы первый запуск приложения имел некоторые разумные начальные настройки. Я думал, что пробежал простой способ сделать это в комплекте приложений .plist, но теперь я не могу его найти. Любые идеи?

4b9b3361

Ответ 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;
}