如何设置NSUserDefault Keys的初始值?

时间:2011-12-12 12:01:15

标签: ios plist nsuserdefaults user-experience

我想为我的NSUserDefault键设置一些初始值,以便第一次运行应用程序时有一些合理的初始设置。我以为我在应用程序包.plist中运行了一个简单的方法来执行此操作,但现在我找不到它。有什么想法吗?

4 个答案:

答案 0 :(得分:70)

您应该使用registerDefaults的{​​{1}}方法。在包中准备包含默认首选项的plist文件,然后使用该plist注册默认值。

NSUserDefaults

您必须在每次启动应用时执行此代码。它会将这些值添加到用户默认层次结构中的单独域中。只要您的应用的用户默认设置没有为某个密钥提供值,NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"]; NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile]; [[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences]; 就会回退到该域并从那里检索该值。

答案 1 :(得分:5)

如果您有许多默认值,请使用ola's answer,否则这对一些参数很有用

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) { 
    [defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];

    // Set initial values 
    ...

    [defaults synchronize];
}

答案 2 :(得分:0)

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];
}

注意:未经测试,从内存中完成

答案 3 :(得分:-1)

-(void) loadDef
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    _removeAd=[userDefaults boolForKey:SAVE_AD_STATUS];

    NSString* strDefSetting=[userDefaults stringForKey:SAVE_STATUS_ADSETTING];
    if(strDefSetting==nil
       ||[strDefSetting isEqualToString:@""]
       )
    {
        strDefSetting=@"0.5";
    }

    _floatAdmob=strDefSetting.floatValue;//0.5;
}