Очистить базу данных, когда требуется область миграции

Для Android есть способ добиться этого, но я все еще озадачен подходом к iOS. Я не хочу выполнять миграцию каждый раз, когда у меня появляется новое обновление, поэтому я предпочитаю очистить базу данных, чтобы начать сначала, если это так.

Я нашел этот вопрос, связанный с это

Я могу использовать этот код только для миграции?

// Notice setSchemaVersion is set to 1, this is always set manually. It must be
// higher than the previous version (oldSchemaVersion) or an RLMException is thrown
[RLMRealm setSchemaVersion:1
        forRealmAtPath:[RLMRealm defaultRealmPath]
    withMigrationBlock:^(RLMMigration *migration, uint64_t oldSchemaVersion) {
   // We haven’t migrated anything yet, so oldSchemaVersion == 0
    if (oldSchemaVersion < 1) {
    // Nothing to do!
    // Realm will automatically detect new properties and removed properties
    // And will update the schema on disk automatically
  }
}];

person shoujo_sm    schedule 02.08.2015    source источник
comment
Этот запрос функции отслеживается по адресу github.com/realm/realm-cocoa/issues/1692. .   -  person segiddins    schedule 02.08.2015


Ответы (1)


Да, вы можете использовать это только для миграции. Из официальных документов:

Вы определяете миграцию и связанную с ней версию схемы, вызывая +[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]. Блок миграции предоставляет всю логику для преобразования моделей данных из предыдущих схем в новую схему. После вызова +[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:] любые области, требующие миграции, автоматически применят предоставленный блок миграции и будут обновлены до предоставленной версии.

Подробнее о миграции

Однако вы можете попробовать удалить Царство и вместо этого создать новое Царство на новом пути. Таким образом, вы должны сохранить номер версии в UserDefaults и обновлять этот номер каждый раз, когда меняется ваша модель данных. Хотя я не знаю, работает ли это. Из документов:

Вы также можете установить собственный путь для области по умолчанию, используя +[RLMRealm setDefaultRealmPath:]. Это особенно полезно при тестировании вашего приложения или при совместном использовании областей между приложениями в общем контейнере iOS 8.

Подробнее о Realm

person ezcoding    schedule 02.08.2015