ios – 使用NSSecureCoding对NSArray进行编码解码时出现意外类错误

ios – 使用NSSecureCoding对NSArray进行编码解码时出现意外类错误,第1张

概述背景 我们有多个符合NSSecureCoding协议的类. @interface ClassA : NSObject <NSSecureCoding>// ...@end@interface ClassB : NSObject <NSSecureCoding>// ...@end 我们注意到NSArray也符合NSSecureCoding.因此,我们尝试以下方法. 对于编码: NSAr 背景

我们有多个符合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进行编码/解码时出现意外类错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存