DroidKaigi2017の@zaki50さんによるオフラインファーストなアプリケーション開発より抜粋
@PrimaryKey
public String id = UUID.randomUUID().toString();
この手があったか!っと目から鱗でした。。Context
が取得できる場合ならInstanceID.getInstance(getApplicationContext()).getId();
も選択肢にはいるかもしれません。
参照 : 一意の識別子のベストプラクティス
自分でAutoIncrementを書く
Kotlin
inline fun <reified T : RealmObject> getAutoIncrementKey(realm: Realm): Long {
if (realm.where(T::class.java).count() == 0L) return 1
else return realm.where(T::class.java).max("id").toLong() + 1
}
// 呼び出し方 getAutoIncrementKey<Dog>(realm)
Kotlin拡張関数
inline fun <reified T : RealmObject> Realm.getAutoIncrementKey(): Long {
if (where(T::class.java).count() == 0L) return 1
else return where(T::class.java).max("id").toLong() + 1
}
//呼び出し方 realm.getAutoIncrementKey<Dog>()
Java
public int getAutoIncrementKey(Realm realm, Class klass) {
if (realm.where(klass).count() == 0) return 1;
else return realm.where(klass).max("id").intValue() + 1;
}
// 呼び出し方 getAutoIncrementKey(realm, Dog.class)
雑ですが、以上です。