设置初始NSUserDefaults

时间:2012-12-19 13:56:50

标签: ios nsuserdefaults

我已经看到一些指南要说这样做,而其他人说这样设置NSUserDefaults的初始值和键会导致应用程序更新时出现问题。我希望我能在这里明确回答这个问题。在我的appdelegate didFinishLaunchingWithOptions方法中我有:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if (![defaults integerForKey:@"totalDays"]) {

        // if there is no value for the key, set it to 1
        [defaults setInteger:0 forKey:@"totalDays"];

    }
    if (![defaults objectForKey:@"currentDate"]) {
        [defaults setObject:@"32 01" forKey:@"currentDate"];
    }
    if (! [defaults boolForKey:@"marked"]) {
        [defaults setBool:NO forKey:@"marked"];

    }
    if (![defaults arrayForKey:@"checkedrows"]) {
        NSMutableArray *arr1  = [NSMutableArray arrayWithArray:[defaults arrayForKey:@"checkedrows"]];
    }
[defaults synchronize];

3 个答案:

答案 0 :(得分:2)

注意,您可能不需要“默认值”来使用它们。它可以节省您在应用程序中稍后检查它们为零或零值的时间。

正如另一个答案所述,一旦将值保存到用户默认值,它应该从更新到更新并备份到备份。多年来我一直在使用它们,没有数据丢失或损坏的问题。

答案 1 :(得分:1)

如果用户更新应用程序,则会保存存储在用户默认值中的数据。更新后,您的代码不会出现任何问题。

答案 2 :(得分:1)

您根本不应设置默认值!相反,使用NSUserDefaults提供的方便的方法正是为了这个目的:-registerDefaults:。在程序启动时尽早使用默认值字典调用它。

这样做的好处是因为-registerDefaults:是暂时的,你可以区分“用户没有自定义此首选项”和“用户明确将此首选项设置为默认值”,这一点很重要您在更新版本的程序中更改默认设置。由于不需要保存到磁盘,它也快一点。

相关问题