【问题标题】:Catching NSKeyedUnarchiver exception捕获 NSKeyedUnarchiver 异常
【发布时间】:2014-12-10 00:47:36
【问题描述】:

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

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

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

除了在 Obj-C 中实现 try/catch 之外,有没有纯 Swift 解决这个问题的方法?

【问题讨论】:

  • 我也有同样的问题。您已经找到解决方案了吗?
  • Apple 应该为 swift 做一个 try/catch ......
  • 同样的问题,这太疯狂了..

标签: ios swift nsdata nsexception nskeyedunarchiver


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 2014-11-24
    • 2010-09-28
    • 2017-08-18
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多