ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> IOS开发 >> iOS数据持久化:使用NSKeyedArchiver进行数据归档

iOS数据持久化:使用NSKeyedArchiver进行数据归档(1/9)

来源:网络整理     时间:2018-10-20     关键词:

本篇文章主要介绍了" iOS数据持久化:使用NSKeyedArchiver进行数据归档",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下: 写在前面这次记录的是iOS中利用NSKeyedArchiver和NSKeyedUnarchiver进行数据的归档和解档操作。所谓的归档,就是将数据写到一个文件里...

写在前面

这次记录的是iOS中利用NSKeyedArchiverNSKeyedUnarchiver进行数据的归档和解档操作。

  • 所谓的归档,就是将数据写到一个文件里面去。一般我们的应用的变量常量之类的数据都是在内存里面的,只要APP关闭,这些数据都会丢失。但是把数据存储到文件里面去,就能将数据保存到本地磁盘里面(目前iOS基本就是在沙盒里面操作了),不管是APP关闭还是重启设备,下次启动APP的时候都能够读出来。

  • 所谓解档(别人也叫反归档),就是将数据从文件里面读取出来。在程序里面使用。

本文会由浅入深介绍我们常用的使用NSKeyedArchiverNSKeyedUnarchiver进行数据的归档和解档的方法。
主要有以下几点内容:

  • 普通数组的归档和解档

  • 因为文件夹不存在造成归档失败

  • 因为无写权限造成归档失败

  • 普通字典的归档和解档

  • 多个普通对象同时归档和解档

  • 自定义对象的归档和解档

  • 自定义对象数组的归档和解档

  • 自定义对象里面有另一个自定义对象的归档和解档

普通数组的归档和解档

普通数组的归档流程:

  1. 获得文件归档的路径

  2. 使用NSKeyedArchiver类的 NSKeyedArchiver+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path方法将数据归档


//普通数组归档
- (IBAction)onClickBtn1:(id)sender {
    //沙盒ducument目录
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYES) objectAtIndex:0];
    //完整的文件路径
    NSString *path = [docPath stringByAppendingPathComponent:@"numbers.plist"];
    NSArray *numbers = @[@"one",@"two"];
    //将数据归档到path文件路径里面
    BOOL success = [NSKeyedArchiver archiveRootObject:numbers toFile:path];
    if (success) {
        NSLog(@"文件归档成功");
    }
}

注:+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path方法有个BOOL类型的返回值。说明归档操作是有可能失败的。一般来说,归档失败最多的情况有两种:文件路径不存在以及无写入权限。后面会单独讲。


普通数组解档流程

  • 获得文件归档的路径

  • 相关图片

    相关文章