Скажем, у меня есть структура Realm-объектов, который выглядит, как это -Android Realm.io - Удаление суб-объекты
public class Person extends RealmObject {
@PrimaryKey
private int id;
private String name;
private List<Pet> pets
// Setters, getters...
}
public class Pet extends RealmObject {
private String name;
private MedicalRecord record;
// Setters, getters...
}
public class MedicalRecord extends RealmObject {
private String something;
private String somethingElse;
// Setters, getters...
}
Теперь я получил новый объект Person с существующим идентификатором (первичный ключ) и я хочу обновить этого человека. Так что я сделать что-то вроде этого -
Беда в том, что список домашних животных этого человека (и медицинской документации домашних животных), все еще там в БД. больше не связаны с этим человеком, но все еще там.
Я пытался сделать это -
Person existingPerson = realm.where(Person .class).equalTo("id", ID).findFirst();
existingPerson.getPets().clear();
Но никакого успеха там. Как удалить подобъекты объектов realmObjects?
Кроме того, существует ли способ определить политику для объекта realm, чтобы он удалялся, когда нет ссылки на него (он не связан с каким-либо родительским объектом)?
К сожалению, я не понял вас вопрос раньше. На данный момент нет способа очистки и удаления всех объектов из «RealmList», см. Эту проблему https://github.com/realm/realm-java/issues/1560 и https://github.com/realm/realm- java/issues/1104. В настоящее время обходным решением является удаление каждого объекта в цикле с обратным порядком: для (int i = dogs.size() - 1; i> = 0; i--) { dogs.get (i) .removeFromRealm(); } – beeender
'RealmList.removeFromRealm()' скоро будет объединен, вы увидите прогресс в этом PR https://github.com/realm/realm-java/pull/2061 – beeender
'RealmList.removeFromRealm()' был сливается с мастером, вы можете дождаться следующего релиза или попробовать его с моментальным снимком. – beeender