如何设置NSUserDefault键的初始值?
我想为我的NSUserDefault键设置一些初始值,以便应用程序的第一次运行有一些合理的初始设置。 我以为我在应用程序包.plist中运行一个简单的方法来做到这一点,但现在我找不到它。 有任何想法吗?
你应该使用NSUserDefaults
的registerDefaults
方法。 准备包含默认首选项的包中的plist文件,然后使用该plist来注册默认值。
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"]; NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile]; [[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
您必须在每次启动应用程序时执行此代码。 它会将这些值添加到用户默认分层结构中的单独域中。 只要你的应用程序的用户默认不提供某个键的值, NSUserDefaults
就会回退到这个域,并从那里检索值。
如果你有很多默认值,让我们使用ola的答案 ,否则这对于一些参数是有好处的
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) { [defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED]; // Set initial values ... [defaults synchronize]; }
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]; }
注意:未经testing,从内存中完成
-(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; }