Magiczny rekord, zapisywanie i NSFetchedResultsController

Nie jestem pewien, czy jest to problem ze sposobem zapisywania Magical Record, czy tylko gdzieś popełniam błąd noob.

Używam NSFetchedResultController (FRC) i UITableView, aby wyświetlić listę encji, gdy użytkownik stuknie „Dodaj”, nowy kontroler widoku z edytorem jest wciśnięty, nowa jednostka jest tworzona za pomocą[MyEntity MR_createEntity]. Użytkownik może dodać dodatkowe elementy tutaj, które są dodawane do głównej jednostki za pośrednictwem relacji. Gdy użytkownik dotknie „Zapisz” w tym kontrolerze widoku, kontekst zostanie zapisany przy użyciu[[NSManagedObjectContext MR_contextForCurrentThread] MR_save]

Wygląda na to, że NSFetchedResultsController się zaktualizuje, ale gdy stuknę, aby edytować obiekt, nie ma tam żadnych elementów podrzędnych. Wydaje się, że debugowanie pokazuje, że nawet jeśli obiekt został zapisany, FRC nadal ma podmiot z jego identyfikatorem tymczasowym.

Robię naiwny[self.tableView reloadData] w FRCcontrollerDidChangeContent metoda delegowania.

Ponowne uruchomienie aplikacji ładuje poprawne elementy, a elementy potomne są poprawnie wyświetlane w kontrolerze widoku edytora.

Wygląda na to, że FRC reaguje na zdarzenie zapisu „głównego wątku”, ale zapis odbywa się na wątku w tle, więc FRC go nie widzi. Sprawdziłem i wszystkie operacje „moje” (konfigurowanie FRC, tworzenie i pobieranie elementów) odbywają się w kontekście głównego wątku.

Próbowałem nasłuchiwać powiadomień o zmianach w MR_rootSavingContext i scalać je z kontekstem głównego wątku, który to rodzaj działał, ale skończyło się na duplikatach wierszy w FRC (jeden był poprawnym „stałym” obiektem, a drugi tymczasowym).

questionAnswers(2)

yourAnswerToTheQuestion