W mojej aplikacji mam NSFetchResultController
do ładowania obiektów Core Data w UITableView. Żądanie pobrania skojarzone z tym FRC używa nowej właściwości viewContext
dostępnej dla NSPersistentContainer
(iOS10).Dane podstawowe iOS10: viewContext nie otrzymuje aktualizacji z newBackgroundContext() z NSFetchResultController
Po wybraniu komórki przekazuję obiekt Core Data do nowego kontrolera ViewController. Ten nowy znak VC nadal wykorzystuje obiekt viewContext. Z tego ViewController, mogę zaktualizować obiekt Core Data z ViewControllers przedstawione modalnie. Aby to zrobić, używam newBackgroundContext()
dla modalnych ViewController. Mogę zapisać obiekt Core Data aktualizacji bez żadnych problemów.
Problem polega na tym, że FRC nie jest automatycznie aktualizowany za pomocą obiektu Core Data aktualizacji z kontekstu tła. Wygląda to tak, jakby obiekt viewContext nie był odbierany i nie obsługiwał aktualizacji obiektu Core Data.
Jeśli ustawię automaticallyMergesChangesFromParent
na wartość true dla viewContext (szerokiej aplikacji), FRC pobiera zaktualizowany obiekt Core Data, gdy zapisuję kontekst tła. Z mojego punktu widzenia viewContext powinien automatycznie zarządzać scalaniem danych. Dokumentacja opisuje viewContext za pomocą: "Ten kontekst jest skonfigurowany do generowania i automatycznego korzystania z powiadomień o zaporach z innych kontekstów."
Czy możesz wyjaśnić, jak obsługiwać różne konteksty za pomocą kontrolera NSFetchResultController?
Dzięki, Axel
dokumentacji (w NSManagedObjectContext.h) dla .automaticallyMergesChangesFromParent mówi:” Niezależnie od kontekstu automatycznie scala zmiany zapisane do koordynatora lub kontekst nadrzędny. Ustawienie tej właściwości na YES, gdy kontekst jest przypięty do długoterminowego generowania zapytań, nie jest obsługiwane. "Tak więc wygląda na to, że przypadek braku rodzica jest objęty" koordynatorem sklepu ".viewviewer i .newBackgroundContext mają tego samego koordynatora sklepu (Właśnie to sprawdziłem) Więc ustawienie .automatycznieMergesChangesFromParent spowodowałoby oczekiwane zachowanie –