自定义对象及存储自定义对象数组的持久化

自定义对象
  • 首先创建一个Person类,继承自NSObject,需要遵守<NSCoding>协议@interface Person : NSObject<NSCoding>声明一个name属性@property(nonatomic,strong)NSString *name;
  • 实现两个代理方法
//当对象进行归档操作的时候,会自动调用该方法
 -(void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.name forKey:@"name"];
}```

//当对象进行反归档的时候调用
-(instancetype)initWithCoder:(NSCoder *)aDecoder{`
if (self = [super init]) {
self.name = [aDecoder decodeObjectForKey:@"name"];
}return self;
}```

  • 在视图控制器里进行归档和反归档(即存入和取出数据)
    • 归档
//创建一个Person对象
Person *person = [[Person alloc] init];
    person.name = @"小花";
//路径
NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *path = [documentPath stringByAppendingPathComponent:@"person.plist"];
//进行归档并存入
[NSKeyedArchiver archiveRootObject:person toFile:path];
  • 反归档
//用一个Person对象接受反归档返回的对象
Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
存储自定义对象的数组

数组内存储的对象也需要遵守<NSCoding>协议实现两个代理方法,具体如上

  • 视图控制器内
//创建两个person对象
    Person *person1 = [[Person alloc] init];
    person1.name = @"huahua";
    Person *person2 = [[Person alloc] init];
    person2.name = @"peipei";
    //将两个person对象存入数组
    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:person1,person2, nil];
    //获取路径
    NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *path = [documentPath stringByAppendingPathComponent:@"array.plist"];
//将数组进行归档并存入指定路径
    [NSKeyedArchiver archiveRootObject:array toFile:path];
//用一个数组接收反归档的数据
    NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自:http://www.mamicode.com/info-detail-957988.html 1、iOS...
    哆啦_阅读 6,818评论 0 2
  • 一、数据持久化概述 数据持久化就是数据的永久存储。其本质是将数据保存为文件,存到程序的沙盒中。 1、数据持久化的方...
    lilinjianshu阅读 3,833评论 0 1
  • 27、ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是...
    烟雨平生花飞舞阅读 3,770评论 0 1
  • 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒...
    iOS_程序猿阅读 4,788评论 0 6
  • iOS应用数据存储的常用方式 XML属性列表(plist)归档2.Preference(偏好设置)3.NSKeye...
    清风沐沐阅读 2,755评论 0 1