背景
我们有多个符合NSSecureCoding协议的类。
@interface ClassA : NSObject <NSSecureCoding>
// ...
@end
@interface ClassB : NSObject <NSSecureCoding>
// ...
@end我们注意到NSArray也符合NSSecureCoding。因此,我们尝试以下几点。
用于编码:
NSArray* array = ...
[archiver encodeObject:array forKey:@"AirdropDataKey"];用于解码
NSArray* array = [unarchiver decodeObjectOfClass:[NSArray class]
forKey:@"AirdropDataKey"];我得到以下错误信息。
由于NSInvalidUnarchiveOperationException异常终止应用程序,原因是:‘NS.objects键的值’属于意外类'ClassA‘。允许的类是{( NSArray )}‘“。
任何人都可以解释为什么和是否有可能解决这一问题?
发布于 2015-04-28 17:12:51
NSCoder提供了一个额外的方法decodeObjectOfClasses:forKey:,其中可以传递一组预期的对象。这允许解码嵌套结构。
只需使用NSArray、ClassA和ClassB类传递一组:
NSSet *classes = [NSSet setWithObjects:[NSArray class], [ClassA class] ,[ClassB class], nil];
NSArray* array = [unarchiver decodeObjectOfClasses:classes forKey:@"AirdropDataKey"];发布于 2014-10-30 17:31:40
用于解码使用下面的方法和检查:-
- (id)decodeObjectForKey:(NSString *)keyhttps://stackoverflow.com/questions/26658279
复制相似问题