NSDictionary、NSArray调用writeToFile:atomically:失败
现象:
从网络请求获取到数据,得到的是一个正常的字典数据,但是写入本地总是失败。
- 原因:
查了好长一会,发现是数据问题,网络数据中出现了null值。导致存不成功。
不禁要问自己一个问题,合法的字典和数组一定能写到本地吗?答案当然是否。因为plist只能存基础数据,boolean,data,date,number,string,以及包含基本数据类型的数据集NSDictionary、NSArray。
有人会说用NSUserDefaults存吧,抱歉,NSUserDefaults底层也是用的plist,还是想别的招吧。
所以希望服务端的开发人员,如果不是必须给null值,建议都传空字符串好么!!!好么-_-。 - 解决方案:
事情已经出了,怎么解决呢?
- 字典过滤掉null值,适用于不需要null值做判断的情况;
- 放弃plist,改用sqlite;
附去掉null值工具类:
https://git.oschina.net/yanglishuan/RemoveNULL.git