在Swift中,如果数据无法解压,NSKeyedUnarchiver.unarchiveObjectWithData(data)将抛出异常。
在某些情况下,我们不能保证数据没有损坏,比如从文件中读取数据。
我不知道Swift中有try/catch机制,我也不知道像canUnarchive这样的方法可以帮助防止异常。
除了在Obj-C中实现try/catch之外,有没有一个纯粹的Swift解决方案来解决这个问题?
发布于 2015-11-14 02:08:29
因为unarchiveObjectWithData()没有throw它的异常,所以目前还没有办法在Swift中捕获它(在撰写本文时)。iOS 9SDK添加了一个新的NSKeyedUnarchiver方法decodeTopLevelObject(),该方法现在可以throws一个错误。您可以使用do、try、catch控制流捕获此问题。
do {
let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...))
} catch {
print(error)
}https://stackoverflow.com/questions/26374127
复制相似问题