NSUserDefaults standardUserDefaults setObject: forKey: не работает для предпочтения Multivalue

Я пытаюсь выполнить следующую задачу

[[NSUserDefaults standardUserDefaults] setObject:@"Dry" forKey:@"vesselType_preference"];
[[NSUserDefaults standardUserDefaults] synchronize];

где мой "vesselType_preference" является многозначным атрибутом, но он не действует. Пожалуйста, помогите, это работает для другого типа атрибута, но не работает для многозначного типа.

Спасибо


person Sunil Pandey    schedule 12.03.2012    source источник


Ответы (2)


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];        
    if (![defaults objectForKey:@"vesselType_preference"])
    {
        [defaults setObject:@"Dry" forKey:@"vesselType_preference"];
    }
    [[NSUserDefaults standardUserDefaults] synchronize];

Это должно работать.

person Johan_    schedule 12.03.2012

NSUserDefaults может обрабатывать только объекты NSDictionary, NSData, NSArray, NSString и BOOL. (Там может быть другой, не уверен). Если вам нужно сохранить объект с несколькими значениями, такой как массив или словарь, я бы сначала сохранил ваши настройки там, а затем сохранил их по умолчанию.

Ваш код отлично подходит для хранения информации по умолчанию для пользователя. Просто убедитесь, что вы указали тип объекта перед сохранением. (id) не будет работать... или не будет работать должным образом.

person Bill Burgess    schedule 12.03.2012