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