我正在开发iOS应用程序的Mac OS端口,并且在基于Storyboard的Cocoa应用程序中使用NSArrayControllers时遇到NSManagedObjectContexts问题。
这是一个后续问题: Storyboard with TabViewController in OS X Application - Core Data Array Controllers in each scene?
我确实有一些像TabBarController一样呈现的ViewControllers,显示了相同的CoreData实体。它们通过与InterfaceBuilder连接的NSArrayControllers加载。
根据我现有的知识,在屏幕上获取数据没有问题。即使编辑和保存到CoreData也可以。 但我意识到,每个Storyboard场景都有它自己的NSArrayControllers实例和每个它自己的NSManagedObjectContext。 在一个屏幕上更改和保存数据时,它不会在其他屏幕上更新,这些屏幕都通过IB绑定绑定,并在所有其他情况下工作。它们只是显示数据,它们最初加载并且不会自动更新。
我认为问题是,来自contextA的已更改数据未合并(或同步)到其他屏幕的其他上下文。
这样做的最佳方式是什么?我应该使用NSManagedObjectContextDidSaveNotification吗?
这意味着,我必须编写很多代码,手动开始将更改从一个上下文合并到所有其他NSManagedContexts。对我来说味道真的很糟糕。我认为必须有一种更简单的方法,我不知道也无法找到答案。
如果你确实有我的提示,请抓住我正确的方向。 非常感谢你。
答案 0 :(得分:0)
问题解决了,我用Cocoa Bindings做了一个拇指错误:我只是将故事板中的一个对象拖到每个场景并将其设置为AppDelegate。我刚用这个实例化了几个AppDelegates,非常糟糕的主意!我更正了这一点,通过我的ViewControllers上的属性引用AppDelegate,现在它可以正常工作。 IB只是有一点小小的边缘,一个人必须完全了解正在发生的事情。