我希望为我的NSUserDefault键设置一些初始值,以便应用程序的第一次运行具有一些合理的初始设置。 我曾认为在应用程序包的.plist文件中有一种简单的方法可以实现这一点,但现在我找不到它了。 有什么想法吗?
我希望为我的NSUserDefault键设置一些初始值,以便应用程序的第一次运行具有一些合理的初始设置。 我曾认为在应用程序包的.plist文件中有一种简单的方法可以实现这一点,但现在我找不到它了。 有什么想法吗?
你应该使用NSUserDefaults
的registerDefaults
方法。在你的包中准备一个包含默认偏好设置的plist文件,然后使用该plist文件来注册默认值。
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
您需要在每次启动应用程序时执行此代码。 它将将这些值添加到用户默认层次结构中的单独域中。 每当您的应用程序用户默认设置不为某个键提供值时,NSUserDefaults
将退回到此域并从中检索该值。
registerDefaults
实际上是做什么的! - LanceNSUserDefaults *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];
}
-(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;
}