微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSKeyedUnarchiver unarchivedObjectOfClass实现产生错误

如何解决NSKeyedUnarchiver unarchivedObjectOfClass实现产生错误

我正在更新一个旧的使用“ NSKeyedUnarchiver unarchiveObjectWithData”的Objective C应用程序,现在已弃用。该应用程序归档由自定义对象组成的数组,这些对象包含(除其他事项外)另一个不同的自定义对象的数组。我已经在2个对象的.h文件中实现了NSSecureCoding,并在两个.m文件中都添加了'+(BOOL)supportsSecureCoding'替代。

我更新后的归档代码可与旧的不推荐使用的NSKeyedUnarchiver unarchiveObjectWithData方法正常工作

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.myArray
                                             requiringSecureCoding:YES
                                                             error:&error];
        BOOL success = [data writetoFile:pathToArchiveFile
                                 options:NSDataWritingAtomic
                                   error:&error];

但是,在更新后的非归档代码中,我得到了一个错误

        NSData *data = [NSData dataWithContentsOfFile: pathToArchiveFile
                                              options:NSDataReadingMappedIfSafe
                                                error:&error];
        self.myArray = [NSKeyedUnarchiver unarchivedobjectOfClass:[NSArray class]
                                                          fromData:data
                                                             error:&error];

错误..."value for key 'NS.objects' was of unexpected class 'MyClass... Allowed classes are '{( "NSArray...

如果我更改为unarchivedobjectOfClass:[MyClass class],则错误..."value for key 'root' was of unexpected class 'NSArray...Allowed classes are '{( "MyClass...

对包含自定义类的数组进行归档时出了点问题,但是我看不到如何解决它,并且可用的文档还很薄弱。我认为存档代码是正确的,因为已弃用的unArchive方法似乎可以正确使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。