Ich bin mir nicht sicher, was ich hier vermisse, also werde ich versuchen, ein Problem zu erklären, das ich habe.Kerndaten holen ... Warum wird das verwaltete Objekt nicht mit Kontext B abgerufen, nachdem es in Kontext A eingefügt wurde und Kontext A gespeichert wurde?
Ich habe zwei nsmanagedobjectcontexte. Ich werde sie A und B nennen
- ich eine neue Einheit E Einsatz in einem
- speichere ich eine
- von BI versuchen, alle E Entitäten im Speicher mit einem einfachen fetchRequest
- gefunden zu holen Wenn die NSFetchRequest ausgeführt wird, um alle E-Entitäten von BI zu erhalten, kann ich nicht den bekommen, den ich in A eingefügt habe, obwohl A gespeichert wurde.
- Ich kann E, wenn ich die NSFetchRequest gegen A.
ich gedacht ausführen, sobald ich die Managed in diesem Zusammenhang auf den persistenten Speicher erhalten würde gerettet einen Kontext speichern (ich nur einen persistenten Speicher Setup) . Also dachte ich mir, dass ich das verwaltete Objekt E von jedem Kontext bekommen könnte, den ich wollte, seit ein NSFetchedRequest vom persistenten Speicher in den Kontext, in dem ich ihn ausführe, abruft.
Was fehlt mir hier? Warum kann ich E nicht aus irgendeinem Kontext erhalten, den ich möchte, nachdem ich den Kontext A gespeichert habe, in den E eingefügt wurde?
Ich sehe. Das hat das Problem behoben. Die Hauptfrage zu all dem ist also: Wenn das Speichern eines Kontextes es so macht, dass die Änderungen in diesem Kontext im tatsächlichen persistenten Speicher gespeichert werden ... warum sieht kein anderer Kontext diese Änderungen beim Abrufen aus einem anderen Kontext? Habe ich falsch damit zu sagen, dass das Speichern eines Kontexts die Änderungen auf der Festplatte fortsetzt? Wenn ich nicht falsch liege, warum kann kein anderer Kontext diese andauernden Änderungen während eines Abrufs sehen? Ich dachte, dass irgendein Kontext den beständigen Speicher die ganze Zeit betrachtet ... Danke – zumzum
Der NSManagedObjectContext ist eine in Speicherdarstellung des Speichers, während Daten in den Kontext geladen werden, wird effektiv im Gedächtnis zwischengespeichert und folglich veraltet, wenn Sie von a separater Kontext Die Änderungen werden mit jedem Aufruf von -save: auf die Festplatte geschrieben. Sie sind jedoch nicht in Kontexten sichtbar, die bereits Objekte von der Festplatte geladen haben, bis sie zusammengeführt werden, oder Sie rufen den Kontext auf. – ImHuntingWabbits
Großartig. Das war mein Missverständnis dann. Es macht jetzt Sinn, warum die Registrierung für die Benachrichtigung das Problem behoben hat. Vielen Dank – zumzum