2016-04-07 3 views
0

Ich entwickle eine App so etwas wie Telefonkontakte. Und ich muss eine Datenbank mit allen Daten zur Verfügung stellen, um sie offline in meiner App zu verwenden.Wie kopiere ich die gebündelte Realm-Datenbank mit einigen Daten, um in meiner App darauf zuzugreifen?

bereitete ich eine Datenbank-Datei in meinem OSX-Anwendung, die ich speziell für diese Aufgabe schrieb (gibt es einige echte Client-Reich-Dateien? Erstellen) Und ich diese Datenbank in meinem iOS-App verwenden. Ich kopiere einfach die Datei aus dem Bundle und stelle eine Verbindung mit Realm.Configuration her. Alles funktioniert gut.

Jetzt versuche ich, das gleiche für Android zu tun.

  • Ich legte die Datei in raw/databasefile.realm.
  • Implementiert Funktion copyBundledRealmFile wie in der Migration Demo-Anwendung auf Repo GitHub.

Dann RealmConfiguration erstellen:

RealmConfiguration config = new RealmConfiguration.Builder(this) 
      .name("databasefile.realm") 
      .deleteRealmIfMigrationNeeded() 
      .build(); 

und init Reich:

realm = Realm.getInstance(config); 

Danach sehe ich, dass der Bereich leer. Warum?

+0

Vielleicht war der 'deleteRealmIfMigration' Flag ausgelöst, der die Realm-Datei zurückgesetzt. Haben Sie versucht, diese Konfiguration nicht zu aktivieren? –

+0

@ChristianMelchior es heißt „RealmMigration zur Verfügung gestellt werden muss“. Aber es gibt keine alte Datenbank auf dem Gerät. Warum muß ich Migration? – BUDDAx2

+0

wegen Ihrer RealmObjects Erklärung anders sein könnte, was Sie haben, wenn die DB erstellen. Können Sie bitte gebaut die Konfiguration mit einer leeren Migration, entfernen Sie die 'deleteRealmIfMigrationNeeded', dann sehen Sie, was ist die Migration benötigt Ausnahme Nachricht? Es wird sagen, was ist der Unterschied zwischen den RealmObjects, die Sie definiert und denen in der Realm-Datei. – beeender

Antwort

0

es sieht aus wie ich eine falsche RealmObject Unterklasse gemacht. Habe gerade erkannt, dass es möglich ist, Modelldefinitionen aus dem RealmBrowser zu speichern.

und jetzt funktioniert es.

Verwandte Themen