2016-02-09 7 views
6

Sto provando a creare un database per la mia applicazione Android usando Realm. Devo avere i dati che sono pre-compilati quando l'app è installata. L'impostazione di una migrazione del reame come parte di RealmConfiguration non viene eseguita quando la versione del database è 0 (il valore predefinito è 0 inizialmente). Come posso aggiungere i dati al primo avvio dell'applicazione?Come posso creare un database di Realm con dati iniziali per la mia app per Android?

risposta

0

Quello che sto facendo adesso è quello di verificare se questa è la prima volta che la mia app è installata e creare un nuovo oggetto.

if (Preferences.freshInstall(getApplicationContext())) { 
     Realm realm = Realm.getDefaultInstance(); 
     realm.beginTransaction(); 
     Category inbox = new Category("Inbox", "#445566"); 
     realm.copyToRealm(inbox); 
     realm.commitTransaction(); 
     Preferences.notNew(getApplicationContext()); 
    } 

Ci dovrebbe essere un modo migliore per fare questo usando Realm Migrazioni

+0

Le migrazioni non sono pensate per pre-compilare il database. Tenere traccia di un valore booleano nelle preferenze è probabilmente la più facile da fare se non si desidera spedire un file pre-popolato con l'app. Detto questo, aggiungere un modo per fornire dati la prima volta che viene creato un ream sembra un caso d'uso che potremmo supportare meglio. –

6

Realm Java 0.89 ha introdotto un metodo che permette di specificare una transazione per essere eseguito quando viene creato un database di Realm per la prima volta. Questo metodo, RealmConfiguration.Builder.initialData(Realm.Transaction transaction), viene chiamato come parte dell'impostazione di RealmConfiguration Builder.

Per esempio

RealmConfiguration config = new RealmConfiguration.Builder(context) 
    .name("myrealm.realm") 
    .initialData(new MyInitialDataRealmTransaction()), 
    .build(); 
0

L'impostazione iniziale delle transazioni di dati, come mostrato dalla @Benjamin nel Regno Java funziona! Spero solo che fosse presente anche in Realm Cocoa.

Ho creato un problema per questo, nel tracker Github here, #3877.