捕获 NSKeyedUnarchiver 异常
Posted
技术标签:
【中文标题】捕获 NSKeyedUnarchiver 异常【英文标题】:Catching NSKeyedUnarchiver exception 【发布时间】:2014-12-10 00:47:36 【问题描述】:在 Swift 中,如果无法取消归档数据,NSKeyedUnarchiver.unarchiveObjectWithData(data)
将引发异常。
在某些情况下,我们无法保证数据是否没有损坏,例如从文件中读取时。
我不知道 Swift 中的 try/catch 机制,也不知道像 canUnarchive
这样有助于防止异常的方法。
除了在 Obj-C 中实现 try/catch 之外,有没有纯 Swift 解决这个问题的方法?
【问题讨论】:
我也有同样的问题。您已经找到解决方案了吗? Apple 应该为 swift 做一个 try/catch ...... 同样的问题,这太疯狂了.. 【参考方案1】:因为unarchiveObjectWithData()
没有throw
它的异常,目前没有办法在Swift 中捕获它(截至撰写时)。 ios 9 SDK 添加了一个新的 NSKeyedUnarchiver
方法 decodeTopLevelObject()
现在 throws
一个错误。您可以使用do
、try
、catch
控制流来捕获它。
do
let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...))
catch
print(error)
【讨论】:
以上是关于捕获 NSKeyedUnarchiver 异常的主要内容,如果未能解决你的问题,请参考以下文章
重命名 Xcode 项目后出现 NSKeyedUnarchiver 错误
如何在 Swift 中捕获 NSKeyedUnarchiver“NSInvalidUnarchiveOperationException”?