2016-10-01 6 views
0

Ich bin ein autodidaktischer Android-Programmierer so leid, wenn dies eine neue Frage ist. Weiß jemand, ob es eine einfache Möglichkeit gibt, zwei Realm-Datenbankdateien zu einer kombinierten Realm-Datenbank zusammenzufassen? Die Datenbanken enthalten dieselben Realmobject-Typen und schließen sich gegenseitig aus (keine Überlappung identischer Objekte).Kombinieren von zwei Realm-Datenbanken des gleichen Realmobject von Android tragen zu Telefon

Mein Ziel ist folgendes: Ich habe eine Realm-Datenbank einer Workout- "Sitzung", die aus einer Liste von Objekten besteht, die der Benutzer mit einem Wearable hinzufügt. Wenn der Benutzer die Sitzung speichert, möchte ich diese gespeicherten Objekte an das Telefon senden, wo sie mit allen früheren Sitzungen in einer auf dem Telefon gespeicherten Realm-Datenbank kombiniert werden können.

Ich bin in der Lage, die Datenbank-Datei von Verschleiß zu Telefon als Asset senden und ersetzen Sie einfach die Datei auf dem Handy (mit diesem Beispielcode https://gist.github.com/tajchert/dc30560891bc6aee76fb), aber es scheint verschwenderisch, die gesamte Datenbank jedes Mal zu senden, und ich will nicht alles verlieren, wenn die Verschleißdatenbank irgendwie gelöscht wird. Ich möchte lieber nur die neuen Daten aus der aktuellen Sitzung speichern und dann die Datenbank auf dem tragbaren Gerät löschen, wenn eine neue Sitzung gestartet wird. Auf diese Weise sende ich immer nur neue Daten an die tragbare Datenschicht.

Antwort

0

Im Allgemeinen ist es nicht möglich, Realm-Objekte zwischen Realms zu verschieben. Sie können copyFromRealm() und copyToRealm() verwenden. Natürlich müssen Sie verfolgen, welche Objekte bereits verschoben wurden (entweder meine Markierung oder das Löschen).

Eine weitere Option ist die Realm Mobile Platform (https://realm.io/products/realm-mobile-platform/), mit der Sie alle Ihre Geräte synchronisieren können.

+0

Realm Mobile Platform klingt wie das Ticket! Ist die Linux/Mac OSX-Anforderung nur zum Ausführen des Servers erforderlich? Ich benutze im Moment einen Windows-PC. Bedeutet das auch, dass ich keine Realm-Dateien mehr auf meine mobile App übertragen muss, sondern diese Daten übertragen muss, solange ich "syncEnabled = true" in meine Abnutzung einbaue? – grantka

+0

Windows wird derzeit nicht unterstützt. Aber Sie könnten versuchen, Linux in einer virtuellen Maschine (Docker, ...) auf Ihrem Windows-Rechner zu installieren. – geisshirt