一,經歷
1.問題出在給NSMutableDictionary類型的字典設置內容上.
[_dictRateApp setObject:[NSNumber numberWithBool:NO] forKey:IS_SHOW_ALERT];
2.很納悶,打印當前字典的時候,key 是正確的, value 也是 Bool 類型的, 可是設置內容的時候就是失敗.
3.很可能是字典是不可變字典造成的.追本溯源到字典的內容產生,是從偏好設置里面獲取到的.
NSMutableDictionary *dict = (NSMutableDictionary *)[[NSUserDefaults standardUserDefaults]objectForKey:RATE_ON_APP_STORE];
_dictRateApp = dict;
4.感覺沒什么問題,參考了stackover 上的一個相似問題,我想起了可能是從偏好設置中取得的字典有問題.
http://stackoverflow.com/questions/16928418/nskeyedunarchiver-initforreadingwithdata-data-is-null
5.然后把字典重新開辟了一段內存,避開了偏好設置返回的字典,就一切 ok 了.
NSMutableDictionary *dictUserDefault = (NSMutableDictionary *)[[NSUserDefaults standardUserDefaults]objectForKey:RATE_ON_APP_STORE];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dictUserDefault];
_dictRateApp = dict;
6.原因可能是偏好設置把可變字典存儲成了不可變字典..