键值编码是 Objective-C 中通过 NSObject
保留的一些 Cocoa 魔法,然而,当问题出现时 NSObject 的 KVO 方法会抛出异常,而且在 Swift 中无法捕获这些异常。此库提供的分类将 NSObject 的 KVO 方法包装在 @try/@catch 块中,当抛出异常时,将填充一个 NSError
对象。
使用很简单。首先导入
import SGYKVCSafeNSObject
然后通过可选传递 NSError
以使用与之前相同的方式执行键值编码
let object = NSObject()
var error: NSError?
object.setValue("any value", forKey: "not a key", error:&error)
if let error = error { NSLog("Key value assignment error: \(error.localizedDescription).") }
NSException
传递似乎会随机导致 EXC_BAD_ACCESS。因此,为了保持安全,异常对象不会打包到 userInfo 字典中,直到我找到原因。