NSCoding
官方解释:
A protocol that enables an object to be encoded and decoded for archiving and distribution.
为存档和分发而对对象进行编码和解码的一种协议。
NSCoding是把数据存储在iOS和Mac OS上的一种极其简单和方便的方式,它把模型对象直接转变成一个文件,然后再把这个文件重新加载到内存里,并不需要任何文件解析和序列化的逻辑。如果要把对象保存到一个数据文件中(假设这个对象实现了NSCoding协议),做法如下:
//将class存储到本地 ps:这里的filePath指文件路径
TestCode *test = [[TestCode alloc] init];
test.name = @"Bob";
test.gender = @"Man";
[NSKeyedArchiver archiveRootObject:test toFile:filePath];
//将存入的数据从本地取出
TestCode *getTest = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
做到以上存储效果的前提是遵循NSCoding协议
在TestCode这个类里面实现NSCoding协议的两个方法:
- (void)encodeWithCoder:(NSCoder *)aCoder //编码方法
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder //解码方法
// 编码
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.name forKey:@"title"];
[aCoder encodeObject:self.gender forKey:@"gender"];
}
// 解码
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.gender = [aDecoder decodeObjectForKey:@"gender"];
}
return self;
}