Realmで一意なPrimaryKeyを設定する方法二つ
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)
雑ですが、以上です。
Author And Source
この問題について(Realmで一意なPrimaryKeyを設定する方法二つ), 我々は、より多くの情報をここで見つけました https://qiita.com/u_nation/items/b7b7257b46ed7cdf4f22著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .