【问题标题】:Core Data no longer firing binding on changes to relationshipCore Data 不再触发对关系更改的绑定
【发布时间】: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


    【解决方案1】:

    好吧,我也为我的应用程序的这个区域采用了 Reactive Cocoa 绑定,并且一切都恢复正常了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多