在 InterfaceBuilder 中,我将 NSArrayController 通过 RepresentedObject 连接到 MOC 到 ViewController。一切正常,我可以添加和删除主对象,选择它们,我可以绑定到 TableView 并编辑它们。但是,如果我将 NSArrayControler 子类化为 MasterController 并仅添加观察者:
class MastersController: NSArrayController {
override func awakeFromNib() {
self.addObserver(self, forKeyPath: "selection", options: NSKeyValueObservingOptions.old, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
Swift.print("observing", keyPath ?? "<no path>")
switch keyPath! {
case "selection":
Swift.print("selection Changed")
default: break
}
}
TableView 没有看到已经存在的对象,只是添加了。我可以编辑它们。但是当我再次打开文档时,新添加的对象也消失了。如果我将控制器的类改回 NSArrayController 我可以再次看到它们。
有什么帮助吗?