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];
должен обеспечить аналогичную функциональность. Однако сохранение будет отложено, потому что это делается в отдельном потоке.