Luk*_*ker 4 arrays nskeyedunarchiver swift
从 iOS 11.4 到 iOS12,Foundation 发生了一些变化。不幸的是我找不到关于这个主题的任何有用的文档。
在 iOS12 之前,我让这段代码可以完美地从某个文件路径读取带有字符串的数组:
if let myList : Array<String> = NSKeyedUnarchiver.unarchiveObject(withFile: filePath) as? Array<String> {
// ...
}
Run Code Online (Sandbox Code Playgroud)
正如我发现的,iOS12 中有一些我应该使用的新方法,我尝试了这个(当然是在 do-catch-结构中,并且在获取数据对象之后):
let myList : Array<String> = try NSKeyedUnarchiver.unarchivedObject(ofClass: Array<String>, from: data)
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个但没有成功:
let myList : Array<String> = try NSKeyedUnarchiver.unarchivedObject(ofClass: Array<String>.self, from: data)
Run Code Online (Sandbox Code Playgroud)
有什么推荐吗?
最后我自己发现了。它适用于这种方法:
if let fileNames = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(dataObject) as? Array<String> {
// ...
}
Run Code Online (Sandbox Code Playgroud)