【问题标题】:Do I need a migration to change type Int to Long?我是否需要迁移才能将类型 Int 更改为 Long?
【发布时间】: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


【解决方案1】:

已确认此案例无需迁移。 Do I need a migration to change type Int to Long?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2018-08-15
    相关资源
    最近更新 更多