UIManagedDocument и NSFetchedResultsController

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

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

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

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

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

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

1 ответ

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

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

[document updateChangeCount:UIDocumentChangeDone];

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

Другие вопросы по тегам