对的,这是可能的.
RealmObjectSchema objectSchema = schema.get("MyObject");
objectSchema.addField("newId", long.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setLong("newId", getNewId(obj));
}
})
.removeField("id")
.renameField("newId", "id")
.addPrimaryKey("id");
Run Code Online (Sandbox Code Playgroud)
但是,您无法直接创建该字段
objectSchema.addField("newId", long.class, FieldAttribute.PRIMARY_KEY)
Run Code Online (Sandbox Code Playgroud)
因为数据库中的值初始化为0,这意味着您将违反创建约束.因此,只有在设置值后才能添加主键约束.
在你的情况下,
RealmObjectSchema objectSchema = schema.get("MyObject");
objectSchema.addField("newId", long.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setLong("newId", getNewId(obj));
}
})
.removePrimaryKey()
.addPrimaryKey("newId");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |