Android Realm - возможно ли обновлять и удалять объекты без идентификатора, как в Swift - PullRequest
0 голосов
/ 25 апреля 2020

Я некоторое время искал четкий ответ на этот вопрос, но не смог его найти, поэтому разместил его здесь.

Для моего Message класса, чтобы удалить или обновить сообщение, Я могу сделать это в Swift:

Для удаления:

func delete() {
    guard let realm = realm else {return}
    try! realm.write {
        realm.delete(self)
    }
}

Для обновления:

func update(_ messageText: String) {
    guard let realm = realm else {return}
    try! realm.write {
        .message_text = messageText
    }
}

Есть Есть ли аналогичный способ удаления и обновления на Android? То, что я нашел до сих пор, довольно уродливо и сложно и требует уникальных идентификаторов для объектов. Это единственный способ сделать это в Android? Я не хочу идентификаторы для моих объектов. Для Realm идентификаторы кажутся нелогичными, и у моих объектов их тоже нет.

Удалить:

public void delete(String id, Realm realm) {
    realm.executeTransactionAsync(realm1 -> {
            RealmResults<Message> results = realm.where(Message.class).equalTo("id", id).findAll();
            results.deleteAllFromRealm();
    }, (Realm.Transaction.OnError) RealmLog::error);
}

Обновить:

public void update(String id, String messageText, Realm realm) {
    realm.executeTransactionAsync(realm1 -> {
        Message m = realm1.where(Message.class).equalTo("id", id).findFirst();
        if (m != null) {
            m.updated = date;
            realm1.insertOrUpdate(m);
        }
    }, (Realm.Transaction.OnError) RealmLog::error);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...