Ich habe einen NSFetchedResultsController eingerichtet, um ein UITableView zu füllen, basierend auf meinem "Haupt" NSManagedObjectContext.NSFetchedResultsController zeigt keine Updates aus anderen Kontexten an
In einem Zeitgeber füge ich fortlaufend Objekte in einen separaten NSManagedObjectContext, aber einen, der seinen NSPersistantStoreCoordinator mit dem Hauptkontext teilt.
Ich kann NSManagedObjectContextWillSaveNotification Benachrichtigungen gesendet werden, und wenn ich einen Neustart der App beendet, habe ich alle Daten aus dem vorherigen Lauf. Mit dem aktuellen NSFetchedResultsController werden jedoch keine Aktualisierungen vorgenommen.
Ich habe ein Testprojekt erstellt und es here platziert.
(Ich dachte zunächst, dies auf Grund geschah dort mehrere Threads im Spiel zu sein, aber es geschieht, wenn alles in einem Thread durchgeführt wird).
Original Question
Ich habe eine NSFetchedResultsController Einrichtung eines UITableView zu füllen, basierend aus meinem 'main' NSManagedObjetContext.
In einem Hintergrundthread kann ich mehrere Objekte in einen separaten NSManagedObjectContext herunterladen und importieren, aber einen, der seinen NSPersistantStoreCoordinator mit dem Kontext des Hauptthreads teilt.
Ich bin registriert, um NSManagedObjectContextWillSaveNotification Benachrichtigungen zu erhalten. Wenn ich diese bekomme, leite ich sie zum Hauptthread weiter und übergebe sie an meinen Hauptkontext.
Mit dem Debugger kann ich beobachten, wie diese eingehen und überprüfen, ob sie tatsächlich Objekte zum Kontext hinzufügen. Meine NSFetchedResultsController wird jedoch nicht aktualisiert. Wenn ich das alles im Hauptthread mache, funktioniert es. Aufruf von -performFetch: auf dem Controller wird es zu aktualisieren, so weiß ich, es ist nicht, dass es nicht die neuen Objekte sehen.
Das meiste davon ist Boilerplate-Code, nur in verschiedene Threads aufgeteilt.
Haben Sie wirklich zwei Kontexte im Hauptthread erstellt und rufen Sie 'mergeChangesFromContextDidSaveNotification:' etc auf? – Yuji
Nein, wenn ich Multithreading deaktiviere, wird alles mit einem Kontext gemacht (hatte vorher die falsche Antwort). –
Wurde festgestellt, dass dies ein Fehler mit NSFRC ist? –