Основные данные сохраняются сбои - PullRequest
0 голосов
/ 22 июня 2010

У меня есть UITableView, который извлекает данные из CoreData с использованием FetchedResultsController, и он регистрируется для обновления данных.

Во втором потоке я загружаю данные с сервера и обновляю их.данные (которые используются UITableView).Обновление не является сложным, и оно просто обновляет поле BOOL объекта.

Когда я вызываю сохранение в контексте объекта, я получаю следующее исключение: NSInternalInconsistencyException, и причина этого

"Failed to process pending changes before save.  The context is still dirty after 100 attempts. ..."

Если я не сохраняю сразу после обновления, а только в тот момент, когда приложение собирается завершить работу, приложение работает нормально, UITableView корректно обновляется и данные сохраняются.

Любыеуказатель на то, почему это может происходить?Я что-то не так делаю?

1 Ответ

1 голос
/ 22 июня 2010

Контексты управляемых объектов не являются потокобезопасными. У вас есть отдельный MOC для каждой темы?

Если это так, я считаю, что правильный шаблон - это регистрация для NSManagedObjectDidSaveNotifications из фона MOC, чтобы вы могли сделать mergeChangesFromContextDidSaveNotification на основной MOC (из основного потока). Это будет синхронизировать ваш MOCs; это не происходит автоматически.

...