SGYKVCSafeNSObject 1.0.1

SGYKVCSafeNSObject 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年6月

Sean G. Young 维护。



  • Sean G Young

这个库向 NSObject 添加了扩展,允许在键值编码时无异常风险。

概述

键值编码是 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).") }

已知问题

  • 当使用 valueForKey:valueForKeyPath: 时,异常不会返回 userInfo 字典中。在测试过程中,尝试将这些方法中捕获的 NSException 传递似乎会随机导致 EXC_BAD_ACCESS。因此,为了保持安全,异常对象不会打包到 userInfo 字典中,直到我找到原因。