捕获NSKeyedUnarchiver异常

JP *_*sek 6 nsdata nsexception ios nskeyedunarchiver swift

在Swift中,NSKeyedUnarchiver.unarchiveObjectWithData(data)如果无法取消存档数据,则会抛出异常.

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

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

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

JAL*_*JAL 9

因为unarchiveObjectWithData()它不是throw它的例外,目前没有办法在Swift中捕获它(截至写作).iOS 9 SDK添加了一个新NSKeyedUnarchiver方法decodeTopLevelObject(),现在throws出错了.你可以用抓住这个do,try,catch控制流.

do {
    let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...))
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)