捕获NSKeyedUnarchiver异常

时间:2014-10-15 03:42:49

标签: ios swift nsdata nsexception nskeyedunarchiver

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

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

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

除了在Obj-C中实现try / catch之外,还有一个纯粹的Swift解决方案吗?

1 个答案:

答案 0 :(得分:9)

因为unarchiveObjectWithData()没有throw它的异常,所以目前无法在Swift中捕获它(截至编写时)。 iOS 9 SDK添加了一个新的NSKeyedUnarchiver方法decodeTopLevelObject(),现在throws出现错误。您可以使用dotrycatch控件流来识别这一点。

do {
    let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...))
} catch {
    print(error)
}