追加、変更、削除処理は必ずトランザクションの中で行う
// Obtain a Realm instance
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
//... オブジェクトの追加や更新 ...
realm.commitTransaction();
変更のキャンセル
realm.beginTransaction();
User user = realm.createObject(User.class);
// ...
realm.cancelTransaction();
オブジェクトの作成
realm.beginTransaction();
User user = realm.createObject(User.class); // 新たなオブジェクトを作成
user.setName("John");
user.setEmail("john@corporation.com");
realm.commitTransaction();
または
User user = new User("John");
user.setEmail("john@corporation.com");
// Realmへオブジェクトをコピーする。これ以降の変更は、返り値のオブジェクトに対して行う必要がある。
realm.beginTransaction();
User realmUser = realm.copyToRealm(user);
realm.commitTransaction();
トランザクションブロック
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.createObject(User.class);
user.setName("John");
user.setEmail("john@corporation.com");
}
});
非同期トランザクション
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
User user = bgRealm.createObject(User.class);
user.setName("John");
user.setEmail("john@corporation.com");
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
// トランザクションは成功
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
// トランザクションは失敗。自動的にキャンセルされます
}
});
バイト配列の更新
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
bytes[] bytes = realmObject.binary;
bytes[4] = 'a';
realmObject.binary = bytes; // 代入またはsetterの呼び出しが必要
}
});
0コメント