【发布时间】:2019-05-22 11:56:30
【问题描述】:
Foundation 从 iOS 11.4 到 iOS12 有一些变化。不幸的是,我找不到任何有关此主题的有用文档。
在 iOS12 之前,我有这段代码工作得很好可以从某个 filePath 中读取带有字符串的数组:
if let myList : Array<String> = NSKeyedUnarchiver.unarchiveObject(withFile: filePath) as? Array<String> {
// ...
}
我发现,iOS12 中有一些我应该使用的新方法,我尝试了这个(当然是在 do-catch 结构中,并且在获取数据对象之后):
let myList : Array<String> = try NSKeyedUnarchiver.unarchivedObject(ofClass: Array<String>, from: data)
我也试过了,但没有成功:
let myList : Array<String> = try NSKeyedUnarchiver.unarchivedObject(ofClass: Array<String>.self, from: data)
有什么推荐吗?
【问题讨论】:
-
在 Swift 中强烈推荐使用轻量级的
JSONSerialization、PropertyListSerialization或Codable协议而不是objective-c-ishNSKeyed(Un)archiver -
我熟悉 Codable,我将它用于“inAppCreatedObjects”,但在这里我必须从我的应用程序中的早期 IOS 版本迁移数据。
标签: arrays swift nskeyedunarchiver