我想为我的NSUserDefault键设置一些初始值,以便应用程序的第一次运行有一些合理的初始设置。我想我在应用程序包.plist中运行一个简单的方法来完成此操作,但现在我无法找到它。有任何想法吗?如何设置NSUserDefault键的初始值?
回答
你应该使用NSUserDefaults
的registerDefaults
方法来完成。准备一个包含默认首选项的包中的plist文件,然后使用该plist来注册默认值。
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
您必须在每次启动应用程序时执行此代码。它会将这些值添加到用户默认层次结构中的单独域中。只要您的应用的用户默认不提供某个键的值,NSUserDefaults
就会回退到该域并从中检索该值。
看起来像这样将默认值注册到易失性存储位置。我不希望它经常回到默认值。这主要是第一次发射。用户设置的值是保留的,还是偶尔会被这个覆盖? – Suz
“易失性内存位置”是什么意思?您必须在每次启动应用程序时执行此代码。它会将这些值添加到用户默认层次结构中的单独域中。只要你的应用程序的用户默认不提供某个键的值,'NSUserDefaults'就会回退到这个域并从那里检索值。 –
用户默认编程指南列出了NSRegistrationDomain具有'volatile'状态,而不是'persistent'。因此,用户默认设置本身是永久性的,默认设置是不稳定的,并且必须在每次应用启动时重新加载。对我来说,“回退”值不如用户设置更持久,这似乎很奇怪。 – Suz
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];
}
注:没有测试,从内存
这真的不是正确的方法。工程,但这不是苹果建议的。按照@ole的回答中所述使用-registerDefaults,或者直接将它们添加到NSRegistrationDomain域。 –
我同意。当我写这个答案时,我不知道registerDefaults,但现在使用它。 –
如果你有很多默认值,让使用ola's answer,否则这是好几个PARAMS
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {
[defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];
// Set initial values
...
[defaults 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:@""]
)
{
[email protected]"0.5";
}
_floatAdmob=strDefSetting.floatValue;//0.5;
}
- 1. 如何设置UI_Knob的初始值?
- 2. 如何设置ModelMultipleChoiceField的初始值?
- 3. nsuserdefault有键值设置如何删除它?
- 4. 如何设置初始发生器值?
- 5. UISlider如何设置初始值
- 6. 无法设置NSUserDefault ToggleSwitch值
- 7. jquery设置初始值
- 8. 设置初始值UILABEL
- 9. SelectFor未设置初始值
- 10. 如何设置Angular 2 ng-bootstrap的键入默认值/初始值?
- 11. 设置数组键初始化(pdo fetch_class)
- 12. Django的ModelMultipleChoiceField设置的初始值
- 13. 如何使用初始化程序设置存储属性的初始值?
- 14. 设置NSUserDefault崩溃
- 15. 如何设置UISegmentedControl的初始选择
- 16. 如何设置TreeViewer的初始大小?
- 17. 设置模型属性的初始值?
- 18. 设置Span元素的初始值
- 19. 设置一个对象的初始值
- 20. 设置modelForm实例的初始值
- 21. 设置对象的初始值
- 22. 设置datetimepicker bootstrap的初始值
- 23. Knockout - 设置选择的初始值
- 24. 设置Django ModelChoiceField的初始值
- 25. NSUserDefault,分配初始化VS标准Userdefault
- 26. 如何在NSUserDefault中设置实体
- 27. 如何为自定义UITableViewCell类设置初始值设定项?
- 28. 如何将初始虚拟键盘设置为小写(Android)
- 29. 如何设置我的UISlider和UISwitch的初始值?
- 30. 初始chromecast设置
检查:http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault -usage.html –