我有一个managedObjectContext
主应用程序,其中绑定NSArrayController
和NSTableView
显示NSArrayController
的内容。
我定期使用后台线程和第二个managedObjectContext
,然后从Web服务器检索最新数据。一旦在后台线程上返回并解析了数据,它就会在mergeChangesFromContextDidSaveNotification
之后与主上下文合并。
在通知触发后(我在合并期间假设),该表显示每个项目的重复条目(如果两个上下文同时显示它们的数据,则该条目将是准确的)。几秒钟后,表格会正确显示数据,并删除重复项。
我认为NSArrayController
正在观察上下文,因为它正在通过合并并允许表显示合并前和合并后的文件。
是否有一种可接受的方法可以阻止阵列控制器自我更新,直到合并完成?
我可以在IB绑定之外执行此操作并强制更新数组控制器,但我非常确定在绑定或合并过程中我必须做一些稍微错误的操作。
非常感谢任何帮助或建议。
答案 0 :(得分:1)
在合并两个上下文之前,您很可能不会向表视图发送beginUpdate
,因此tableview最终会尝试在其中间状态中显示逻辑表。收到通知后冻结tableview,然后在合并上下文时解冻它。