Добавить RealmObject в список, не добавляя его в область

Я знаю, что существуют различия между управляемым RealmList и неуправляемым RealmList. Я не понимаю, как я могу решить, управляется мой список или нет. Я создаю список следующим образом:
myList = new RealmList();
Я заполняю список следующим образом:
myList.add(item);
Каждый элемент, который я добавляю в RealmList, добавляется в Realm, и я не хочу этого, потому что я Я разрабатываю личную библиотеку элементов и хочу, чтобы Царство содержало только те элементы, которые нужны пользователю в его библиотеке. У каждого предмета есть «связанный» список, в который я добавляю другие предметы (добавляя их и в мир, даже если я этого не хочу). Есть ли способ, которым я мог бы просто добавить их в RealmList, не добавляя их также в Царство?


person Luca Nicoletti    schedule 19.12.2016    source источник
comment
Можно ли использовать java List вместо RealmList?   -  person ilya    schedule 19.12.2016
comment
@ilya нет, потому что список находится внутри RealmObject, который принимает только RealmList   -  person Luca Nicoletti    schedule 19.12.2016
comment
Вы пытались аннотировать этот список с помощью @Ignore? realm.io/docs/java/latest/#ignoring-properties   -  person ilya    schedule 19.12.2016
comment
Это не то, чего я хочу. Я хочу, чтобы этот список был в области, если элемент, содержащий список, находится в области. Я получаю данные из API, пользователь может добавить элемент в свою библиотеку (что добавит элемент в область). Если пользователь не добавляет элемент в Царство, он все равно может видеть этот связанный список.   -  person Luca Nicoletti    schedule 19.12.2016
comment
Этот вопрос неясен, потому что я не понимаю, почему вы хотите добавлять элементы в список, не добавляя элементы в список.   -  person EpicPandaForce    schedule 19.12.2016
comment
Я хочу добавить предметы в список предметов, а не в Realm   -  person Luca Nicoletti    schedule 19.12.2016
comment
Кажется, что этот вопрос касается не самой области, а дизайна ваших объектов данных и запросов. Есть много способов добиться этого. Вы можете наследовать Item, чтобы создать новый вид объектов UserItem и/или UserDraftItem, чтобы отличить их друг от друга. Может быть сложно сделать запрос, который содержит все эти объекты, но это возможно, и вы получите четкое представление о целях этих объектов.   -  person ilya    schedule 19.12.2016
comment
Я сделал некоторую отладку, мой список (RealmList‹Item›) всегда неуправляемый, но каким-то образом элементы в списке хранятся в Realm. Вот чего я хочу избежать. Это все. Мои данные в порядке, как это   -  person Luca Nicoletti    schedule 19.12.2016
comment
Это не ошибка, это текущее ограничение Realm realm.io/docs/java/latest/ #limitations Это означает, что у вас пока не может быть неуправляемых полей объекта.   -  person ilya    schedule 19.12.2016
comment
Так почему же тогда isManaged() возвращает false? Даже при отладке никакая функция не вызывается для добавления Предметов в Царство, я не могу понять, почему они добавляются и как   -  person Luca Nicoletti    schedule 19.12.2016


Ответы (1)


Если у вас есть следующий код:

RealmList<Foo> myList = new RealmList(); myList.add(item);

В Realm ничего не добавляется. Добавление элементов в Realm может быть выполнено только в рамках транзакции записи, поэтому выполнение этого вне транзакции гарантирует, что оно не будет сохранено в Realm.

person Christian Melchior    schedule 20.12.2016
comment
На самом деле, элементы добавляются в список, потому что, когда я пытаюсь их редактировать, он говорит, что я не могу редактировать элементы Realm вне транзакции. - person Luca Nicoletti; 20.12.2016
comment
Итак, вы добавляете управляемые объекты Realm в неуправляемый список? - person Christian Melchior; 20.12.2016
comment
Может в этом проблема, как создать неуправляемый объект? - person Luca Nicoletti; 20.12.2016
comment
Просто создайте обычный объект, используя new <name>(). Объекты управляются, если вы запрашиваете их из Realm или используете createObject - person Christian Melchior; 20.12.2016
comment
Тогда это не проблема, потому что я создаю элементы с помощью new Item() - person Luca Nicoletti; 20.12.2016
comment
Затем вам нужно предоставить образец кода большего размера, потому что из вашего описания он должен работать. - person Christian Melchior; 20.12.2016