NSCoding
- 簡介
NSCoding是把數(shù)據(jù)存儲在iOS和Mac OS上的一種極其簡單和方便的方式框弛,它把模型對象直接轉(zhuǎn)變成一個文件,然后再把這個文件重新加載到內(nèi)存里袒炉,并不需要任何文件解析和序列化的邏輯着撩。 - 使用
對象需要實現(xiàn)了NSCoding協(xié)議
// 存儲
Teacher *t = [[Teacher alloc] init];
t.name = [NSMutableString stringWithString: @"李剛"];
t.age = 40;
t.className = @"English";
[NSKeyedArchiver archiveRootObject:t toFile:_file];
// 讀取
Teacher *t = [NSKeyedUnarchiver unarchiveObjectWithFile:_file];
- 實現(xiàn)NSCoding協(xié)議
需要實現(xiàn)兩個方法
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectOfClass:[NSMutableString class] forKey:NSStringFromSelector(@selector(name))];
self.age = [[aDecoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(age))] unsignedIntegerValue];
self.className = [aDecoder decodeObjectOfClass:[NSString class] forKey:NSStringFromSelector(@selector(className))];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.name forKey:NSStringFromSelector(@selector(name))];
[aCoder encodeObject:[NSNumber numberWithUnsignedInteger:self.age] forKey:NSStringFromSelector(@selector(age))];
[aCoder encodeObject:self.className forKey:NSStringFromSelector(@selector(className))];
}
NSSecureCoding
- 簡介
NSSecureCoding是NSCoding的變種,因為NSCoding畢竟不太安全泛范,大部分支持NSCoding的系統(tǒng)對象都已經(jīng)升級到支持NSSecureCoding了,如AFNetworking的AFURLSessionManager侯养。
未完待續(xù)