开发者

mergeChangesFromContextDidSaveNotification Briefly Displays Both Contexts In NSTableView

I have a managedObjectContext for the main application that has a bound NSArrayController and NSTableView displaying the contents of the NSArrayController.

Periodically I use a background thread with a second managedObjectContext that goes and retrieves the latest data from a web server. Once the data has been returned and parsed on the background thread, it is merged with the main context after a mergeChangesFromContextDidSaveNotification.

Immediately after the notification fires (and I assume during the merge), the table shows duplicate entries of every item (which would be accurate if the two contexts were showing both their data at the same time). After a couple of seconds the table correctly displays the data and the duplicates are removed.

I presume the NSArrayController is observing the context as it is going through the merg开发者_开发问答e and allowing the table to show the pre- and post- merge files.

Is there an acceptable method to stop the array controller from updating itself until the merge is complete?

I could do this outside of IB bindings and forcibly update the array controller, but I'm pretty sure that I must be doing something slightly wrong in either my bindings or during the process of the merge.

Any help or suggestions much appreciated.


You are most likely not sending a beginUpdate to the tableview before merging the two context so the tableview ends up trying to display the logical table in its in-between state. Freeze the tableview upon receiving the notification and then unfreeze it when the context have been merged.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜