Xcode 核心数据不再在关系更改时触发绑定
我将MVVM用于许多复杂视图,其中我将一个核心数据模型对象绑定到一个视图模型,该视图模型又绑定到我的视图。例如,Model.children绑定到ViewModel.children,ViewModel.children绑定到View.presentedChildren 直到最近,这还很有效。从Model.children中删除子对象时,所有绑定将按预期触发,视图将更新以反映模型对象的当前状态。但是,由于升级到Xcode 7,绑定不会触发。它们在初始设置绑定时按预期工作,但是如果修改了子关系,则绑定永远不会触发 添加到模型对象的子对象关系中的KV observer不会触发 我显然错过了一些东西。任何提示都将不胜感激 仅供参考,根据10.11进行编译,但在10.10中运行 [更新] 我用addObserver:替换了关系上的bind:调用,并实现了observeValueForKeyPath:如下所示:Xcode 核心数据不再在关系更改时触发绑定,xcode,macos,core-data,xcode7,Xcode,Macos,Core Data,Xcode7,我将MVVM用于许多复杂视图,其中我将一个核心数据模型对象绑定到一个视图模型,该视图模型又绑定到我的视图。例如,Model.children绑定到ViewModel.children,ViewModel.children绑定到View.presentedChildren 直到最近,这还很有效。从Model.children中删除子对象时,所有绑定将按预期触发,视图将更新以反映模型对象的当前状态。但是,由于升级到Xcode 7,绑定不会触发。它们在初始设置绑定时按预期工作,但是如果修改了子关系,则
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
[self setValue: [object valueForKey: keyPath]
forKey: keyPath];
}
-(void)observeValueForKeyPath:(NSString*)对象的键路径:(id)对象更改:(NSDictionary*)更改上下文:(void*)上下文
{
[自设置值:[对象值forkey:keyPath]
福克斯:关键路径];
}
这是可行的,但并不能解释bind的实现中发生了什么变化:对于NSObject或NSManagedObject。我在我的应用程序的这一领域也采用了反应式Cocoa绑定,一切又恢复了正常