需要迁移领域时清除db

时间:2015-08-02 10:02:33

标签: ios migration database-migration realm realm-migration

Android有一种方法可以实现这一目标,但我仍然对iOS的处理方式感到困惑。 我不希望每次有新的更新时都进行迁移,所以如果是这样的话我更喜欢清除db。

我发现此question与此相关

我只能使用此代码进行迁移吗?

// 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
  }
}];

1 个答案:

答案 0 :(得分:0)

是的,您只能将其用于迁移。来自官方文档:

  

通过调用+ [RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]来定义迁移和关联的模式版本。您的迁移块提供了将数据模型从先前模式转换为新模式的所有逻辑。在调用+ [RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]之后,任何需要迁移的Realms都将自动应用提供的迁移块并更新为提供的版本。

Read more about migrations

但您可以尝试删除Realm并在新路径中创建新Realm。因此,您将在UserDefaults中保留版本号,并在每次数据模型更改时更新该编号。我不知道这是否有效。来自Docs:

  

您还可以使用+ [RLMRealm setDefaultRealmPath:]为默认域设置自定义路径。这在测试您的应用时,或在iOS 8共享容器中的应用之间共享领域时特别有用。

Read more about Realm