ios - 捕获 NSKeyedUnarchiver 异常

标签 ios swift nsdata nsexception nskeyedunarchiver

在 Swift 中,NSKeyedUnarchiver.unarchiveObjectWithData(data) 将在无法取消归档数据时抛出异常。

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

我不知道 Swift 中有 try/catch 机制,也不知道有类似 canUnarchive 的方法可以帮助防止异常。

除了在 Obj-C 中实现 try/catch 之外,是否有针对此问题的纯 Swift 解决方案?

最佳答案

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

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

关于ios - 捕获 NSKeyedUnarchiver 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26374127/

相关文章:

iOS -- "add"方法出现在 codeSense 中的自动合成属性

ios - iOS 13 中出现蓝牙权限请求警报,但应用程序不使用蓝牙

具有自定义初始化的 SwiftUI View

iphone - 在我的 mainBundle 中找不到 .js 文件?

objective-c - 想要将3DES加密的NSData转换为NSString

iphone - 从推送通知打开应用程序时,如何转到某个 View ?

ios - Xcode 10.2 支持最新的 NativeScript?

ios - Swift UI 在协议(protocol)中使用 View(协议(protocol) 'View' 只能用作通用约束,因为它有 Self 或关联的类型要求)

iphone - NSData 的 dataWithBytesNoCopy 和 writeToFile

ios - 在自动布局 xcode 之后更改 View 并将其更改为原始 View