字典或数组writeToFile写入不成功原因及解决方式

当使用字典或者数组写入 writeToFile:@"xx/xx.plist" atomically:true]; 返回值为NO 一般有两个原因:

  • 1.要写入的文件夹 没有写入权限.
  • 2.集合内不能存储自定义对象,也不能是null.
    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.

解决方式:

简单的序列化一下就可以了:比如

 NSData *data = [NSJSONSerialization dataWithJSONObject:message options:0 error:NULL];
 [data writeToFile:@"xx/xx.json" atomically:true];

这样字典或者数组里有空值 也可以存储

如果字典里有自定义对象的话 可以使用归档:

//obj是字典或者数组
[NSKeyedArchiver archiveRootObject:obj toFile:@"xx/xx.archive"];

但是一定要为你的自定义对象类遵守 并且实现:

- (void)encodeWithCoder:(NSCoder *)aCoder;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;

你可能感兴趣的:(字典或数组writeToFile写入不成功原因及解决方式)