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

posted on 2016-06-21 17:10  活最好的自己  阅读(2257)  评论(0编辑  收藏  举报

导航