在开发过程中你可能会遇到这样的情况,想把请求回来的数据存到plist文件,可是发现死活存不进去,这个时候你可得注意了,仔细看看你请求回来的数据里有没有包含null,如果包含那恭喜你原因找到了(多数是此原因),因为苹果不允许此无效数据写进plist中,官方解释如下:
If an array or dictionary contains objects that are not property-list objects, then you cannot save and restore the hierarchy of data using the various property-list methods and functions.
解决办法:
1.让后台不要返null,可以返@“”;(不过这样不是很保险,一旦后台一不小心返null,你这边就又出错了,容错度太差)。
2.可以把请求到的数据先转成json串然后再存,取的时候再反转一次就好了;(避开了null不能存入的问题,容错度大,推荐)。
代码:
//获取路径
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *fileName = [path stringByAppendingPathComponent:@"data.plist" ];
//存数据
NSString *json_str = [NSString dictionaryToJson:parameter];//字典转json
[json_str writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:nil];//写入
//取数据
NSString *str = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil];
NSDictionary *temp_data= [NSDictionary dictionaryWithJSONString:str];//json转字典