苹果在iOS 11之后提供了新的解档方法:
+ (nullable id)unarchivedObjectOfClass:(Class)cls fromData:(NSData *)data error:(NSError **)error API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)) NS_REFINED_FOR_SWIFT;
当使用新的解档方法解档嵌套模型时,会报code:4864的错误解档失败:
解决此问题的方法有两种:
方法一:
使用[NSObject class]类型解档
[NSKeyedUnarchiver unarchivedObjectOfClass:[NSObject class] fromData:data error:&error];
方法二:
将所有的嵌套模型作为set集合解档
NSSet *clsSet = [NSSet setWithObjects:[NSArray class],[Person class], nil];
if (@available(iOS 11.0,*)) {
NSArray *getArray1 = [NSKeyedUnarchiver unarchivedObjectOfClasses:clsSet fromData:nil error:nil];
}