Swift 如何创建NSKeyedUnarchiver.unarchiveObject

Swift 如何创建NSKeyedUnarchiver.unarchiveObject,swift,ios12,nskeyedunarchiver,Swift,Ios12,Nskeyedunarchiver,我有一个可以工作但已弃用的代码: 这部分很好: let archived = try? NSKeyedArchiver.archivedData(withRootObject: [defaultRecord] as NSArray, requiringSecureCoding: false) 这是不推荐的: let records = NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [Record]

我有一个可以工作但已弃用的代码:

这部分很好:

 let archived = try? NSKeyedArchiver.archivedData(withRootObject: [defaultRecord] as NSArray, requiringSecureCoding: false)
这是不推荐的:

 let records = NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [Record]
“unarchiveObject(with:)”在iOS 12.0:Use中被弃用 +unarchivedObjectOfClass:fromData:error:取而代之

听起来很简单,但我无法找到一种方法来使用建议的方法,而不会在我尝试的每个组合中出现错误


有这样的工作示例吗?

使用新API归档阵列有点棘手


如果您不使用
try?
忽略错误,您可以自己解决问题。上述方法对我来说不适用于取消归档,我这样做了,它成功了:

NSKeyedUnarchiver.unarchivedObject(ofClasses: [Record.self], from: archived)

尝试最好检查一下,tnx!顺便说一句,我使用的是迅捷json,我的类目前采用的是:class Record:NSObject,NSCoding,Codable如果你的类已经采用了
Codable
drop
SwiftyJSON
NSCoding
(甚至可能
NSObject)
drop意味着我只需删除SwiftyJson cocoa pod,事情就会继续进行,或者我需要进行大量重构?你必须进行重构,但这是值得的
Codable
是内置的(没有依赖项),比
SwiftyJSON
更高效。最终代码会比现在少。好的,我会研究一下。顺便问一句,考虑到我现在采用的是非编码、可编码,你的答案仍然有效吗?