2010-06-22 3 views
0

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

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

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

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

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

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

ответ

1

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

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

+0

Ох ... Я держу одномодовый MOC от своего рода класса CoreDataUtil. Теперь чувствую себя глупо. @ _ @ Один вопрос: изменения, сохраненные от одного MOC, будут отражены в другом MOC? Благодаря!!! – Justin

+0

Добавлено немного больше информации – admanimal

Смежные вопросы