bug:[NSKeyedUnarchiver initForReadingWithData:]: data is NULL


一,經歷

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.原因可能是偏好設置把可變字典存儲成了不可變字典..


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM