Magical Record, сохранение и NSFetchedResultsController

Не уверен, что это проблема с тем, как Magical Record сохраняет, или я просто где-то делаю ошибку нуба.

Я использую NSFetchedResultController (FRC) и UITableView для отображения списка сущностей, когда пользователь нажимает «Добавить», новый контроллер представления с помощью редактора нажимается, новая сущность создается с помощью [MyEntity MR_createEntity ]. Пользователь может добавить сюда дополнительные объекты, которые добавляются к основному объекту через связь. Когда пользователь нажимает «Сохранить» в этом контроллере представления, контекст сохраняется с использованием [[NSManagedObjectContext MR_contextForCurrentThread] MR_save]

Кажется, что NSFetchedResultsController обновляется, но когда я нажимаю для редактирования объекта, ни один из дочерних объектов не существует. . Отладка, кажется, показывает, что даже если объект был сохранен, FRC все еще имеет объект с временным идентификатором.

Я делаю наивный [self.tableView reloadData]в методе делегата FRC controllerDidChangeContent.

При перезапуске приложения загружаются правильные объекты, а дочерние объекты правильно отображаются в контроллере представления редактора.

Похоже, что FRC отвечает на событие сохранения «основного потока», но на самом деле сохранение происходит в фоновом потоке, поэтому FRC его не видит.Я проверил, и все «мои» операции (настройка FRC, создание и выборка сущностей) происходят в контексте основного потока.

Я пытался прослушивать уведомления об изменениях в MR_rootSavingContext и объединять их с контекстом основного потока, что вроде как сработало, но в итоге я получил дубликаты строк в FRC (одна была правильной «постоянной» сущностью, а другая — временной) .

8
задан Marcin 11 June 2012 в 05:17
поделиться