ios – 捕获NSKeyedUnarchiver异常

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)
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...