【发布时间】:2019-01-10 01:05:26
【问题描述】:
我的 RealmObject 类中有一个生日字段,它的类型为Int?。我需要将此字段的类型更改为Long?。我不知道我是否需要迁移。
来自领域文档:
整数类型 byte、short、int 和 long 在 Realm 中都映射为 long。
我尝试在模拟器上安装 没有 deleteRealmIfMigrationNeeded 的应用程序版本(这意味着如果需要,Realm 将尝试进行迁移),然后将字段从 Int? 更改为 @ 987654325@。没有崩溃或异常。此外,当我从模拟器中拉出我的领域文件时,字段的类型保持不变,仍然是 Int?。
open class Profile : RealmObject() {
@PrimaryKey
var id = ""
var email = ""
var firstName = ""
var lastName = ""
var dateJoined = 0
var gender: String? = null
var birthday: Int? = null // I want to change this to Long?
}
我期望在这种情况下我不需要迁移。但我不想在没有得到真正答案的情况下推送更新。
【问题讨论】:
-
您是否设置了个人资料,包括
birthday字段,然后将其更改为Long?并尝试打开应用程序?如果它显示正确的日期并且您可以查看/编辑它而不会崩溃,那么您应该没问题。顺便说一句,该标志似乎暗示如果需要迁移,它将删除该对象,而不是它自己会迁移它。 -
是的,配置文件是使用以前版本的应用程序(带有
Int?的版本)设置的,然后我将其更改为Long?并且没有崩溃。是的,deleteRealmIfMigrationNeeded不会进行迁移,但我已经有了迁移代码,所以我的理论是,如果 Realm 需要运行迁移,它会拥有而不是删除文件。
标签: android kotlin realm realm-java