问题描述
我正在更新一个旧的使用“ 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 (将#修改为@)