首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用NSArray对NSSecureCoding进行编码/解码时出现意外类错误

在用NSArray对NSSecureCoding进行编码/解码时出现意外类错误
EN

Stack Overflow用户
提问于 2014-10-30 16:23:57
回答 2查看 5.8K关注 0票数 14

背景

我们有多个符合NSSecureCoding协议的类。

代码语言:javascript
复制
@interface ClassA : NSObject <NSSecureCoding>
// ...
@end

@interface ClassB : NSObject <NSSecureCoding>
// ...
@end

我们注意到NSArray也符合NSSecureCoding。因此,我们尝试以下几点。

用于编码:

代码语言:javascript
复制
NSArray* array = ...
[archiver encodeObject:array forKey:@"AirdropDataKey"];

用于解码

代码语言:javascript
复制
NSArray* array = [unarchiver decodeObjectOfClass:[NSArray class] 
                                          forKey:@"AirdropDataKey"];

我得到以下错误信息。

由于NSInvalidUnarchiveOperationException异常终止应用程序,原因是:‘NS.objects键的值’属于意外类'ClassA‘。允许的类是{( NSArray )}‘“。

任何人都可以解释为什么和是否有可能解决这一问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 17:12:51

NSCoder提供了一个额外的方法decodeObjectOfClasses:forKey:,其中可以传递一组预期的对象。这允许解码嵌套结构。

只需使用NSArrayClassAClassB类传递一组:

代码语言:javascript
复制
NSSet *classes = [NSSet setWithObjects:[NSArray class], [ClassA class] ,[ClassB class], nil];
NSArray* array = [unarchiver decodeObjectOfClasses:classes forKey:@"AirdropDataKey"];
票数 24
EN

Stack Overflow用户

发布于 2014-10-30 17:31:40

用于解码使用下面的方法和检查:-

代码语言:javascript
复制
 - (id)decodeObjectForKey:(NSString *)key
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26658279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档