在 Swift 中,NSKeyedUnarchiver.unarchiveObjectWithData(data)
如果无法取消归档数据,将引发异常。
在某些情况下,我们无法保证数据是否未损坏,例如从文件读取时。
我不知道 Swift 中的 try/catch 机制,也不知道这样的方法canUnarchive
可以帮助防止异常。
除了在 Obj-C 中实现 try/catch 之外,有没有纯 Swift 的解决方案来解决这个问题?
在 Swift 中,NSKeyedUnarchiver.unarchiveObjectWithData(data)
如果无法取消归档数据,将引发异常。
在某些情况下,我们无法保证数据是否未损坏,例如从文件读取时。
我不知道 Swift 中的 try/catch 机制,也不知道这样的方法canUnarchive
可以帮助防止异常。
除了在 Obj-C 中实现 try/catch 之外,有没有纯 Swift 的解决方案来解决这个问题?
因为unarchiveObjectWithData()
它不是throw
例外,所以目前没有办法在 Swift 中捕获它(截至撰写时)。iOS 9 SDK 添加了一个新NSKeyedUnarchiver
方法decodeTopLevelObject()
,该方法现在throws
出错了。do
您可以使用, try
,catch
控制流来捕捉它。
do {
let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...))
} catch {
print(error)
}