由于Swift当前没有try-catch,我该如何在这行代码中防止坏数据导致崩溃?
var myObject = NSKeyedUnarchiver.unarchiveObjectWithData(data) as MyClass
更新
我在游乐场中创建了一个非常简单的示例以进行演示。假设我们不知道data
中有什么内容,如何捕获第二行的SIGABRT? 在调用unarchiveObjectWithData
之前,是否没有办法检查确保可以对NSData对象进行反归档?
var data = "foo bar".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
if let unarc = NSKeyedUnarchiver.unarchiveObjectWithData(data) { // Execution was interrupted: signal SIGABRT
}
unarchiveObjectWithData
方法中真的应该接受一个错误引用作为参数,以处理 Objective-C 风格的异常不抛出的情况... 不确定他们在核心库中是如何忽视这个问题的,但唉。 - chasew