У меня есть RealmObject
User
, который я храню в одноэлементном режиме и получаю доступ во всем приложении - он был загружен в поток пользовательского интерфейса. Объект представляет зарегистрированного пользователя и имеет отношение «один ко многим» с классом Item
. При изменении его в сделке, например, в:Чтение объекта RealmObject из другого потока
Это не будет работать, потому что я к нему доступ внутри транзакции, которая происходит в другом потоке. Чтобы уточнить, что мне нужно сделать, это сохранить идентификатор пользователя за пределами транзакции, а затем получить доступ к этой хранимой переменной в транзакции при выполнении запроса, например?
Integer userId = UserSingleton.getUser().getId();
Integer classId = mItem.getClassId();
RealmSingleton.getUserInstance().executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.where(User.class).equalTo("mId",userId).findFirst();
user.deleteItem(classId);
}
});
Это звучит правдоподобно, хотя я действительно задумываюсь о реализации 'deleteItem' – EpicPandaForce
@EpicPandaForce - это всего лишь цикл, который выполняет итерацию через' '' '' '' Пользователь', пока не найдет один с соответствующим идентификатором класса, и когда он находит совпадение, которое он называет 'RealmList.deleteItemAt' - вот и все. – shoe
А так https://realm.io/docs/java/latest/api/io/realm/RealmList.html#deleteFromRealm-int-? Хотя я предпочитаю получать элемент и называть его 'deleteFromRealm', он должен работать тогда. Какая странная проблема. – EpicPandaForce