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