今天在項目中使用NSUserDefaults存儲一個是否提示更新版本的變量从撼,居然花了挺多時間的,猛然才發(fā)現一個NSUserDefaults也有這么多名堂低零,花點時間記錄下來婆翔。
我的需求是,需要存儲一個是否提示更新版本的變量啃奴,這個變量默認值是YES,我需要在彈框的“不再提示”按鈕事件中雄妥,將它變成NO依溯,達到效果。
首先瘟则,在APPdelegate中聲明該NSUserDefaults屬性黎炉,以前我使用的是
<pre> if(![[NSUserDefaults standardUserDefaults] boolForKey:@"Remind"]){
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Remind"];
}
</pre>
但是這里有個問題醋拧,當我這樣子設置時,我的默認值確實是YES丹壕,但是后續(xù)我沒有辦法改變他的值庆械,當我在其他函數中將它變成NO時菌赖,我在這里的代碼判斷中:![[NSUserDefaults standardUserDefaults] 就是為YES缭乘,所以每次進入AppDelegate中琉用,都會將這個值設置成YES.
經過搜索和理解,我發(fā)現NSUserDefaults有一個設置默認值的方法(汗辕羽,現在才發(fā)現)逛尚,就是:registerDefaults: 所以代碼改為
<pre>NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys:@YES, @"Remind",nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
</pre>
這樣刁愿,因為使用的NSDictionary作為參數,傳入的是對象铣口,所以之后的設置值有一些變化,取值沒有變化
<pre>
//設置值
[_Defaults setValue:@NO forKey:@"Remind"];
[_Defaults synchronize];
//取值
[_Defaults boolForKey:@"Remind"]);
</pre>