我们有多个符合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"];
我收到以下错误消息.
Terminating app due to uncaught exception ‘NSInvalIDUnarchiveOperationException’,reason: ‘value for key ‘NS.objects’ was of unexpected class ‘ClassA’. Allowed classes are ‘{(
NSArray
)}’.’
任何人都可以解释为什么以及是否有可能解决这个问题?
编辑
我想我明白了.请参阅以下帖子中的我的anwser.祝你好运〜
Strange behavoir when decoding an NSArray via NSSecureCoding
解决方法 NSCoder提供了另一种方法decodeObjectOfClasses:forKey:
,其中可以传递一组预期对象.这允许解码嵌套结构. 只需使用NSArray和ClassA和ClassB类传递一组:
NSSet *classes = [NSSet setWithObjects:[NSArray class],[ClassA class],[ClassB class],nil];NSArray* array = [unarchiver decodeObjectOfClasses:classes forKey:@"AirdropDataKey"];总结
以上是内存溢出为你收集整理的ios – 使用NSSecureCoding对NSArray进行编码/解码时出现意外类错误全部内容,希望文章能够帮你解决ios – 使用NSSecureCoding对NSArray进行编码/解码时出现意外类错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)