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