NSUserDefaults standardUserDefaults setObject:forKey:不适用于多值首选项

时间:2012-03-12 12:30:43

标签: iphone settings nsuserdefaults preferences multivalue

我正在尝试执行以下任务

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

我的" vesselType_preference"是多值属性,但它没有受到影响。请帮助这适用于其他类型的属性,但不适用于多值类型。

由于

2 个答案:

答案 0 :(得分:1)

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

这应该有用。

答案 1 :(得分:0)

NSUserDefaults只能处理NSDictionary,NSData,NSArray,NSString和BOOL的对象。 (可能还有另外一个,不确定)如果你需要存储一个像数组或字典这样的多值对象,我会先将你的设置存储在那里,然后将其保存为默认值。

您的代码可以很好地将信息存储到用户默认值。只需确保在保存之前指定了对象类型。 (id)将无效......或者无法正常工作。