2017-07-23 3 views
0

Dies ist eine Follow-up-Frage wie diese: Core Data concurrency with NSPersistentContainerPopulate UITableView aus privaten Kerndaten Kind Kontext

I NSManagedObjects in einem Kind Kontext erschaffe (mit NSPrivateQueueConcurrencyType), dass ich in einem UITableView durch eine gesicherte anzeigen möchte NSFetchedResultsController bevor Sie sie im Geschäft speichern.

Das Erstellen der Objekte funktioniert, und ich hole sie aus dem Kindkontext. Aber ich bekomme einen Absturz, wenn ich die Zellen mit den Informationen in den verwalteten Objekten bevölkere.

Ich rate, weil die Objekte auf einem anderen Thread erstellt wurden?

Ich möchte die Objekte nicht speichern, bis der Benutzer auf die Schaltfläche Speichern klickt. In der obigen Frage habe ich einen Workaround gefunden, aber es fühlt sich an wie ein Hack.

Also, wie könnte ich das beheben? Ist es überhaupt möglich, die UI mit Objekten aus einem privaten Kindkontext zu aktualisieren?

Antwort

1

Den untergeordneten Kontext zu einem mainQueue-Parallelitätstyp machen. Da Sie die Daten in der Benutzeroberfläche anzeigen müssen, muss sie im Hauptthread enthalten sein.

+0

Gotcha. Oder vielleicht sogar einen dritten privaten Kontext verwenden, in dem ich alles in einem anderen Thread erzeuge, und ihn dann in den mainQueue-Kindkontext kopiere, um ihn anzuzeigen? Und dann zum Laden, wenn der Benutzer "Speichern" drückt. – Koen

Verwandte Themen