6

在 Swift 中,NSKeyedUnarchiver.unarchiveObjectWithData(data)如果无法取消归档数据,将引发异常。

在某些情况下,我们无法保证数据是否未损坏,例如从文件读取时。

我不知道 Swift 中的 try/catch 机制,也不知道这样的方法canUnarchive可以帮助防止异常。

除了在 Obj-C 中实现 try/catch 之外,有没有纯 Swift 的解决方案来解决这个问题?

4

1 回答 1

10

因为unarchiveObjectWithData()它不是throw例外,所以目前没有办法在 Swift 中捕获它(截至撰写时)。iOS 9 SDK 添加了一个新NSKeyedUnarchiver方法decodeTopLevelObject(),该方法现在throws出错了。do您可以使用, try,catch控制流来捕捉它。

do {
    let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...))
} catch {
    print(error)
}
于 2015-11-13T18:08:29.467 回答