Ich arbeite an einer Anwendung, die von Core Data unterstützt wird. Momentan speichere ich den Objektkontext als und wenn ich eine Entity zum Kontext hinzufüge oder lösche. Ich fürchte, es wird die Leistung beeinträchtigen, also habe ich überlegt, die Speicherung zu verzögern. In der Tat könnte ich den ganzen Weg verzögern, bis die Anwendung beendet wird. Ist es zu riskant, die Daten nur zu speichern, wenn die Anwendung geschlossen wird? Wie oft sollte ich den Objektkontext aufrufen?Wie oft sollte ich in Core Data speichern?
Ich dachte daran, einen separaten Thread mit dem Speichern zu behandeln: Es wird auf einem Semaphor warten. Jedes Mal, wenn ein Teil der Anwendung eine helper/util-Methode zum Speichern der Core-Daten aufruft, wird der Semaphor dekrementiert. Wenn es auf Null ist, speichert der "Save thread" einmal und speichert den Semaphor auf eine, sagen wir, 5, und dann wieder schlafen.
Eine gute Empfehlung? Danke!
Danke für die schnelle Antwort. Meine Objekte sind nicht riesig, aber das Objekt ist ein bisschen kompliziert. Der zugrunde liegende Speicher ist SQLite, also sollte es, wie Sie sagten, ziemlich gut sein. Es gibt ein zusätzliches Problem, das ich vor kurzem begegnete: Ich erstelle ein Entitätsobjekt im Kontext und speichere es. In einem kurzen Moment, wenn ich diese Entität lösche (später mit einem FetchedResultsController abgerufen), würde ich einen Fehler bekommen, der etwas mit Interner Konsistenz zu tun hat. Ich denke, es ist, weil der Kontext das Objektdiagramm im Speicher nicht aktualisiert hat? – Justin
Ich würde hinzufügen, dass Sie Ihre tatsächliche speichern Frequenz eine Variable oder eine '# definieren möchten, so dass, wenn Sie testen, können Sie Ihre Häufigkeit speichern und die Ergebnisse in Instrumenten Feinabstimmung. –