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