Как доставить приложение с предварительно заполненной базой данных

Я хотел бы доставить мое приложение с уже заполненными данными в моей базе данных. Должен ли я просто скопировать его в каталог документов или есть ли другие вещи?

+23
источник поделиться
2 ответа

В документации по царству есть раздел "Объединение королевства с помощью приложения" :

Его общий для того, чтобы засеять приложение с исходными данными, сделав его доступным для ваших пользователей сразу при первом запуске. Вот как это сделать:

  • Сначала заполните область. Вы должны использовать ту же модель данных, что и ваше окончательное приложение для доставки, чтобы создать область и заполнить ее данными, которые вы хотите связать с вашим приложением. Поскольку файлы realm являются кросс-платформенными, вы можете использовать приложение OS X (см. наш пример JSONImport) или ваше приложение iOS, работающее в симуляторе.

  • В коде, в котором вы создаете этот файл, вы должны закончить, сделав компактную копию файла (см. [RLMRealm writeCopyToPath: error:]). Это уменьшит размер файла Realms, что сделает ваше приложение для конечного приложения загруженным для ваших пользователей.

  • Перетащите новую сжатую копию вашего файла realm в свои окончательные приложения Xcode Project Navigator.

  • Перейдите на вкладку фаз построения целевых объектов приложения в Xcode и добавьте файл области на фазу сборки "Копировать ресурсы Bundle".

  • В этот момент ваш связанный файл в реальном времени будет доступен вашему приложению. Вы можете найти его путь, используя [[NSBundle mainBundle] pathForResource: ofType:].

  • Вы можете создать область только для чтения, вызвав [RLMRealm realmWithPath: readOnly: error:]. Или, если вам нравится создавать файл с возможностью записи в реальном времени на основе этих исходных данных, вы можете скопировать связанный файл в папку "Документы приложений" с помощью [[NSFileManager defaultManager] copyItemAtPath: toPath: error:], а затем построить новую область с помощью [ RLMRealm realmWithPath:].

Вы можете обратиться к нашему образцу приложения миграции для примера того, как использовать пакетный файл области.

+25
источник

Предварительно заполненная база данных Realm для Android

Поместите свою базу данных realm в папку res/raw

и выполните следующий код в действии:

//Копирование базы данных области

copyBundledRealmFile(this.getResources().openRawResource(R.raw.default0), "default0.realm");

RealmConfiguration config0 = new RealmConfiguration.Builder()
            .name("default0.realm")
            .build();

realm = Realm.getInstance(config0);

private String copyBundledRealmFile(InputStream inputStream, String outFileName) {
    try {
        File file = new File(this.getFilesDir(), outFileName);
        FileOutputStream outputStream = new FileOutputStream(file);
        byte[] buf = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buf)) > 0) {
            outputStream.write(buf, 0, bytesRead);
        }
        outputStream.close();
        return file.getAbsolutePath();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
0
источник

Посмотрите другие вопросы по метке или Задайте вопрос