我在尝试修复已弃用的方法时遇到了一些问题。在弃用之前,我保存了我的CustomClass数组,如下所示:
data = try NSKeyedArchiver.archivedData(withRootObject: tabCustomObj, requiringSecureCoding: true)
然后我恢复数据与:
try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [CustomClass]
从非弃用的方法中,我使用以下方法:
try NSKeyedUnarchiver.unarchivedArrayOfObjects(ofClass: CustomClass.self, from: data)
对我来说,它与new方法是等效的,但它看起来失败了,它只适用于一个对象。现在,所以我不反对我的代码,但对于未来,它将是问题,如果有人有同样的问题(或我错过了什么)?
2条答案
按热度按时间kq0g1dla1#
当
CustomClass
符合NSObject and NSSecureCoding
时,如示例代码所示,解码对我有效。下面是我的测试代码,它使用原始的
NSKeyedUnarchiver.unarchivedArrayOfObjects(ofClass:...)
来恢复[CustomClass]
数组。注意,它也适用于
qxsslcnc2#
感谢您的反馈,通过比较工作示例,这是一个完全类似的情况.我终于找到了问题,我解码我的
CustolmClass
中包含NSValue数组的属性,我正在解码它使用:当MyCustomClass使用不推荐使用的方法时,它可以工作,当使用非不推荐使用的方法解码CustomClass对象的表格时,它会失败。当使用新版本解码我的CustomClass中的myTab时,它修复了这个问题:
多亏了工作基地的例子,它让我走上了正确的轨道来识别问题!