NSSecureCoding
官方解释:A protocol that enables encoding and decoding in a manner that is robust against object substitution attacks.
一种协议,它以一种抗对象替换攻击的健壮方式实现编码和解码。
NSSecureCoding相对NSCoding来说对数据的处理添加了一定的安全性
存与取
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[unarchiver setRequiresSecureCoding:YES];
//解码
Foo *someFoo = [unarchiver decodeObjectForKey:NSKeyedArchiveRootObjectKey];
如何遵循协议
在原来encodeWithCoder
和initWithCoder
的基础上增加supportsSecureCoding
,如下
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.title forKey:@"title"];
[aCoder encodeObject:self.author forKey:@"author"];
[aCoder encodeBool:self.isPublished forKey:@"isPublished"];
}
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
if (self) {
self.title = [aDecoder decodeObjectForKey:@"title"];
self.author = [aDecoder decodeObjectForKey:@"author"];
self.isPublished = [aDecoder decodeBoolForKey:@"isPublished"];
}
return self;
}
+ (BOOL)supportsSecureCoding{
return YES;
}