如何在Realm中设置唯一的主键?

Xar*_*iss 3 android realm

如何在Android的Realm中设置唯一主键?Realm文档说我不能使用String或int / long以外的任何东西,所以UUID类型也是不可能的吗?如果我有同名物品怎么办?

例如

public class GroceryItem extends RealmObject {
    @PrimaryKey
    private long        id;    <--- how can I make this unique without UUID?
    private String      name;

public long getId() {
    return id;
}
public void setId(long id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
} }
Run Code Online (Sandbox Code Playgroud)

Ant*_*pov 6

Realm不支持主键的任何自动增量。有关更多信息,请访问文档。因此,您必须自己处理。

1)使用时应使用UUID。您还可以从中获取long,int或String值:

long: UUID.randomUUID().getMostSignificantBits();
int: (int) UUID.randomUUID().getMostSignificantBits();
String: UUID.randomUUID().toString();
Run Code Online (Sandbox Code Playgroud)

2)或者,您可以从数据库中查询一些数据并应用一些规则来生成新密钥。例如,查询最后一个元素并增加它的主键。但这不是理想的方法。