【发布时间】:2018-06-29 11:44:05
【问题描述】:
keyPathsForValuesAffecting<key> 方法有问题。当name 或surname 发生变化时,我想通知fullName 的观察者。但不幸的是,观察员没有收到通知。
我的代码:
将被观察的类:
class DependencyTest: NSObject {
@objc dynamic var fullName: String {
return name + " " + surname
}
@objc var name = ""
@objc var surname = ""
class func keyPathsForValuesAffectingFullName() -> Set<NSObject> {
return ["name" as NSObject, "surname" as NSObject]
}
}
观察者视图控制器:
let dep = DependencyTest()
override func viewDidLoad() {
super.viewDidLoad()
addObserver(self, forKeyPath: "dep.fullName", options: .prior, context: nil)
dep.name = "bob" // Im expecting that `observeValue:` method will be fired
dep.surname = "gril"
}
override func observeValue(forKeyPath keyPath: String?,
of object: Any?,
change: [NSKeyValueChangeKey : Any]?,
context: UnsafeMutableRawPointer?) {
print("????" + keyPath!) // not called
}
谢谢!
【问题讨论】:
标签: ios swift key-value-observing