我想爲我的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 –