2016-08-15 1 views
1

Begonnen mit Realm als Speicher-Layer für meine App. Dies ist das Szenario, das ich versuche zu lösenRealm: Müssen wir jedes neu erstellte RLMObject schreiben

Szenario: Ich bekomme eine ganze Reihe von Daten vom Server. Ich konvertiere jedes Datenstück in ein RLMObject. Ich möchte am Ende nur in den persistenten Speicher "speichern". Dazwischen möchte ich, dass diese RLMObjects Punkte erzeugen, wenn ich eine Abfrage mache

Ich sehe keine Lösung dafür in Realm. Es sieht so aus, als ob man jedes Objekt nach der Erstellung in die Realm-DB zurückschreibt. Die Dokumentation sagt auch, dass Schreibvorgänge teuer sind. Gibt es einen Weg?

Um den Overhead zu reduzieren, könnte ich die Liste der erstellten Objekte verwalten und alle in einer Transaktion schreiben. Sieht immer noch nach viel Arbeit aus. Soll es so verwendet werden?

Antwort

1

Sie können die Objekte als Standalone erstellen, ohne sie dem Realm hinzuzufügen und sie dann am Ende in einer einzigen Transaktion (die sehr effizient ist) hinzufügen.

Schauen Sie sich die Dokumentation über die Objekte hier erstellen: https://realm.io/docs/objc/latest/#creating-objects

Es ist auch ein Beispiel von hier Objekte in aufträgt, wo sie in Stücke hinzukommen, so dass andere Threads die Änderungen beobachten können, wie sie passiert: https://realm.io/docs/objc/latest/#using-a-realm-across-threads

+0

Danke, ich versuche den Unterschied zwischen zwei folgenden Anweisungen zu verstehen 1. Ihre obige Aussage von "Crete Objekte als Standalone und fügen Sie sie in einer einzigen Transaktion" 2. Anweisung im Beispiel "Sharing Realm-Instanzen über Threads wird nicht unterstützt". Ich erstelle eine Instanz einer Klasse, die eine Unterklasse von RLMObject ist, um meine Daten zu speichern. Bedeutet Anweisung 2, dass ich einen dispath_async nicht starten kann, um einen Hintergrund-Thread zu erstellen, der diese Objekte in Realm schreibt? –

+0

Nein, tut es nicht. Sie müssen nur eine neue 'RLMRealm'-Instanz erstellen, um auf einen anderen Thread zu schreiben. – Dmitry

+0

Eigenständige Objekte können über Threads hinweg gemeinsam genutzt werden. Es sind nur Objekte, die einem Realm hinzugefügt wurden, die nicht geteilt werden können (da sich das Realm im anderen Thread in einem anderen Status befinden könnte). – ast

Verwandte Themen