UIManagedDocument и NSFetchedResultsController - PullRequest
2 голосов
/ 31 января 2012

У меня проблемы с сохранением сущности с использованием UIManagedDocument. У меня есть NSFetchedResultsController с его контекстом, установленным как контекст UIManagedDocuments. У меня есть контроллер с разделами. Пользователь добавляет запись в контекст UIManagedDocuments, и я сохраняю контекст, используя: [сохранение контекста: & ошибка]; и мой NSFetchedResultsController обновляется правильно.

Если я оставляю представление с NSFetchedResultsController, а затем возвращаюсь к представлению, в котором я создаю новый NSFetchedResultsController с тем же контекстом UIManagedDocuments, я получаю сообщение об ошибке при вызове: [fetchedResultsController executeFetch: & error];

Ошибка говорит:

CoreData: ошибка: (NSFetchedResultsController) Извлеченный объект в индексе имеет имя раздела не по порядку ». Объекты должны быть отсортированы по названию раздела '

и выборка не удалась.

Если я подожду некоторое время, прежде чем вернусь к представлению, я не получу ошибку. Я знаю, что операция сохранения выполняется в дочернем контексте, а затем помещает изменения в родительский контекст, и я думаю, что это как-то связано с проблемой. У кого-нибудь есть решение?

1 Ответ

2 голосов
/ 10 апреля 2012

Согласно справке UIManagedDocument, вы не должны сохранять через NSManagedObjectContext. Сохранение должно быть выполнено с помощью соответствующих API-интерфейсов UIManagedDocument. К сожалению, в документе не совсем ясно, что вы должны использовать.

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

[document updateChangeCount:UIDocumentChangeDone];

должен обеспечивать аналогичную функциональность. Однако сохранение будет отложено, поскольку оно выполняется в отдельном потоке.

...