writeToFile失败解决

NSArray或者NSDictionary在写入到文件的时候返回NO,写入失败。
这个时候我们可以试着检查下数组或者字典中存储的是否是自定义的模型(对象),若是自定义的模型或者对象的话,writeToFile是会失败的,

解决方法:
不要使用writeToFile,而是通过归档来达到本地存储的目的,我们需要做的是在模型中遵循NSCoding协议并且重写下面两个方法:

@interface PostDirModel : NSObject<NSCoding>
//栏目ID
@property (nonatomic, assign) NSInteger dirid;
//栏目名称
@property (nonatomic, copy) NSString *dirname;
//栏目图标
@property (nonatomic, copy) NSString *dir_logo;
#define Kdirid @"dirid"
#define Kdirname @"dirname"
#define Kdir_logo @"dir_logo"

@implementation PostDirModel

- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeInteger:_dirid forKey:Kdirid];
    [aCoder encodeObject:_dirname forKey:Kdirname];
    [aCoder encodeObject:_dir_logo forKey:Kdir_logo];
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super init]) {
        _dirid = [aDecoder decodeIntegerForKey:Kdirid];
        _dirname = [aDecoder decodeObjectForKey:Kdirname];
        _dir_logo = [aDecoder decodeObjectForKey:Kdir_logo];
    }
    return self;
}

修改完模型之后,在需要保存或者读取的地方使用归档或者解档

[NSKeyedArchiver archiveRootObject:postDirModelArr toFile:FuncFilePath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:FuncFilePath]) {
        self.postDirModelArr = [NSKeyedUnarchiver unarchiveObjectWithFile:FuncFilePath];
    }

则可以解决writeToFile失败问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、 沙盒概念基本介绍 iOS 应用程序只能在该 app 的文件系统中读取。这个默认的 app 文件系统就是我们说...
    Laughingg阅读 2,942评论 2 10
  • 27、ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是...
    烟雨平生花飞舞阅读 694评论 0 1
  • 数据持久化的相关知识 四种将数据持久化存储到iOS文件系统的机制: plist 对象归档 iOS的嵌入式关系数据库...
    melouverrr阅读 721评论 0 0
  • 下面是我最近两年学习OC中的一些基础知识,对于学习OC基础知识的人可能有些帮助,拿出来分享一下,还是那句话不喜勿喷...
    小小赵纸农阅读 2,829评论 1 7
  • 1.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令伟阅读 1,135评论 0 10

友情链接更多精彩内容