mergeChangesFromContextDidSaveNotification кратко отображает оба контекста в NSTableView - PullRequest
0 голосов
/ 31 марта 2011

У меня есть managedObjectContext для основного приложения, которое имеет границы NSArrayController и NSTableView, отображающие содержимое NSArrayController.

Периодически я использую фоновый поток со вторым managedObjectContext который идет и получает последние данные с веб-сервера.Как только данные возвращены и проанализированы в фоновом потоке, они объединяются с основным контекстом после mergeChangesFromContextDidSaveNotification.

Сразу после срабатывания уведомления (и я предполагаю, что во время слияния) в таблице показаны дублированные записи каждого элемента (что было бы точно, если бы два контекста отображали оба своих данных одновременно).Через пару секунд таблица корректно отображает данные, и дубликаты удаляются.

Я предполагаю, что NSArrayController наблюдает за контекстом, когда он проходит слияние, и позволяет таблице показывать пред- ифайлы после слияния.

Есть ли приемлемый способ остановить обновление контроллера массива до завершения слияния?

Я мог бы сделать это вне привязок IB и принудительно обновить контроллер массива, но я вполне уверен, что я должен делать что-то немного неправильное либо в моих привязках, либо в процессе слияния.

Любая помощь или предложения высоко ценится.

1 Ответ

1 голос
/ 31 марта 2011

Скорее всего, вы не отправляете beginUpdate в табличное представление перед объединением двух контекстов, поэтому табличное представление в итоге пытается отобразить логическую таблицу в промежуточном состоянии.Заморозьте табличное представление после получения уведомления и затем разморозьте его, когда контекст был объединен.

...