Волшебная запись, сохранение и NSFetchedResultsController
Не уверен, что это проблема с тем, как спасает Magical Record, или я просто где-то допускаю ошибку noob.
Я использую NSFetchedResultController (FRC) и UITableView для отображения списка сущностей, когда пользователь нажимает «Добавить». новый View Controller с редактором выдвигается, новая сущность создается с[MyEntity MR_createEntity]
, Пользователь может добавить сюда дополнительные объекты, которые добавляются к основному объекту посредством отношения. Когда пользователь нажимает & quot; Сохранить & quot; в этом View Controller контекст сохраняется с помощью[[NSManagedObjectContext MR_contextForCurrentThread] MR_save]
NSFetchedResultsController, кажется, обновляется, но когда я нажимаю, чтобы отредактировать сущность, ни один из дочерних сущностей там не появляется. Кажется, что отладка показывает, что, даже если объект был сохранен, FRC все еще имеет объект с его временным идентификатором.
Я делаю наивно[self.tableView reloadData]
в FRCcontrollerDidChangeContent
метод делегата.
Перезапуск приложения загружает правильные объекты, и дочерние объекты отображаются правильно в контроллере представления редактора.
Похоже, что FRC отвечает на «основной поток» событие save, но на самом деле сохранение происходит в фоновом потоке, поэтому FRC его не видит. Я "проверил и все" мои " все операции (настройка FRC, создание и выборка сущностей) происходят в контексте основного потока.
Я попытался прослушать уведомления об изменениях в MR_rootSavingContext и объединить их с контекстом основного потока, что сработало, но в итоге я получил дублирующиеся строки в FRC (одна была правильной сущностью «постоянная», а другая - временной).