【发布时间】:2015-12-24 15:48:36
【问题描述】:
我将 MVVM 用于许多复杂的视图,其中我将核心数据模型对象绑定到视图模型,该视图模型又绑定到我的视图。例如,Model.children 绑定到 ViewModel.children,ViewModel.children 绑定到 View.presentedChildren。
直到最近,这还不错。从 Model.children 中删除子项时,所有绑定都按预期触发,并且视图更新以反映模型对象的当前状态。然而,自从升级到 Xcode 7 后,绑定不会触发。它们在最初设置绑定时按预期工作,但是如果修改了子关系,则绑定永远不会触发。
添加到模型对象的子关系的 KV 观察者会触发。
我显然遗漏了一些东西。任何提示将不胜感激。
仅供参考,针对 10.11 进行编译,但在 10.10 中运行。
[更新]
我已经用 addObserver: 替换了对关系的 bind: 调用,并实现了 observeValueForKeyPath: 如下:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
[self setValue: [object valueForKey: keyPath]
forKey: keyPath];
}
这可行,但不能解释 bind 的实现发生了什么变化:对于 NSObject 或 NSManagedObject。
【问题讨论】:
标签: xcode macos core-data xcode7