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
}
}];
答案 0 :(得分:0)
是的,您只能将其用于迁移。来自官方文档:
通过调用+ [RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]来定义迁移和关联的模式版本。您的迁移块提供了将数据模型从先前模式转换为新模式的所有逻辑。在调用+ [RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]之后,任何需要迁移的Realms都将自动应用提供的迁移块并更新为提供的版本。
但您可以尝试删除Realm并在新路径中创建新Realm。因此,您将在UserDefaults中保留版本号,并在每次数据模型更改时更新该编号。我不知道这是否有效。来自Docs:
您还可以使用+ [RLMRealm setDefaultRealmPath:]为默认域设置自定义路径。这在测试您的应用时,或在iOS 8共享容器中的应用之间共享领域时特别有用。