我想爲我的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. UISlider如何設置初始值
- 3. 無法設置NSUserDefault ToggleSwitch值
- 4. 設置初始值UILABEL
- 5. jquery設置初始值
- 6. 設置模型屬性的初始值?
- 7. 設置對象的初始值
- 8. 設置datetimepicker bootstrap的初始值
- 9. 設置modelForm實例的初始值
- 10. 設置一個對象的初始值
- 11. 如何設置UISegmentedControl的初始選擇
- 12. 如何設置TreeViewer的初始大小?
- 13. 如何爲自定義UITableViewCell類設置初始值設定項?
- 14. 如何設置我的UISlider和UISwitch的初始值?
- 15. jScrollPane初始設置?
- 16. React-Virtualized ScrollSync:如何設置初始的scrollTop值?
- 17. 如何設置日期選擇器的初始值?
- 18. angular2 - 如何設置選擇框的初始值
- 19. 如何設置Golang中文本輸入的初始值?
- 20. 如何在Ext.Net中設置屬性的初始值
- 21. 如何將會話變量的初始值設置爲'零'?
- 22. iphone SDK:如何設置UIPickerView的初始值?
- 23. 如何設置只讀字段的初始值
- 24. 如何將初始值設置爲Ionic 2中的FormArray控件?
- 25. 如何在Cocoa啓動時設置NSPopUpButton的初始值
- 26. 如何將初始值設置爲iReport中的變量?
- 27. 如何在Objective C中設置未初始化的值?
- 28. 如何爲django中的ManyToMany字段設置初始值?
- 29. 在Knockout select中設置初始值
- 30. 在UIPicker中設置初始值
檢查:http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault -usage.html –