Har*_*arv 0 android realm realm-migration
我正在尝试将主键的当前值更改为另一个.像这样.
realm?.executeTransactionAsync ({ realm ->
val teamRealmObj = realm?.where(Team::class.java)?.equalTo("name", oldTeamName)?.findFirst()
teamRealmObj?.name = newTeamName
})
Run Code Online (Sandbox Code Playgroud)
这里name属性是主键.
我收到了这个错误.
创建对象后,无法更改主键字段'name'失败.
我怎样才能做到这一点?我是否必须复制(只有不同的名称属性)并删除旧的?这将导致一对多或多对多的关系,因为必须在数据库中的每个位置替换新对象.
需要一个更好的方法来做到这一点.谢谢,如果有人能帮我解决这个问题.
这段代码解决了我的问题.
realm?.executeTransactionAsync ({ realm ->
val teamRealmObj = realm.where(Team::class.java)?.equalTo("name", oldTeamName)?.findFirst()
val newTeamObj = realm.copyFromRealm(teamRealmObj)
newTeamObj?.name = newTeamName
realm.copyToRealmOrUpdate(newTeamObj)
teamRealmObj?.deleteFromRealm()
}
Run Code Online (Sandbox Code Playgroud)
无需重新创建链接.
realm.copyToRealmOrUpdate(newTeamObj)
Run Code Online (Sandbox Code Playgroud)
这条线自动执行此操作.
| 归档时间: |
|
| 查看次数: |
1762 次 |
| 最近记录: |