【问题标题】:Add RealmObject to a List without adding it to the Realm将 RealmObject 添加到列表而不将其添加到领域
【发布时间】:2016-12-19 08:57:47
【问题描述】:

我知道托管 RealmList 和非托管 RealmList 之间存在差异。我不明白如何决定我的列表是否受到管理。我创建的列表如下:
myList = new RealmList();
我将列表填充如下:
myList.add(item);
我添加到 RealmList 的每个项目都添加到了 Realm,我不想要它,因为我正在开发一个个人项目库,并且希望 Realm 只包含用户在他的库中需要的项目。每个项目都有一个“相关”列表,我在其中添加其他项目(也将它们添加到领域,即使我不想这样做)。 有没有一种方法可以让我将它们添加到RealmList 而无需将它们也添加到领域?

【问题讨论】:

  • 是否可以使用 java List 而不是 RealmList
  • @ilya 否,因为列表位于 RealmObject 中,它只接受 RealmList
  • 你试过用@Ignore注释那个列表吗? realm.io/docs/java/latest/#ignoring-properties
  • 这不是我想要的。如果具有列表的项目在领域中,我希望该列表在领域中。我正在从 API 获取数据,用户可以将项目添加到他的库中(这会将项目添加到领域)。如果用户没有在 Realm 上添加项目,他仍然可以看到这个相关列表
  • 这个问题不清楚,因为我不明白你为什么要向列表中添加项目而不向列表中添加项目。

标签: android realm realm-mobile-platform realm-list


【解决方案1】:

如果你有以下代码:

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

Realm 中没有添加任何内容。将项目添加到 Realm 只能在写入事务中完成,因此在写入事务之外进行是保证它不会被 Realm 持久化。

【讨论】:

  • 实际上,项目已添加到列表中,因为当我尝试编辑它们时,它说我无法在事务之外编辑 Realm 项目
  • 所以您将托管领域对象添加到非托管列表中?
  • 可能是这个问题,如何创建非托管对象?
  • 只需使用new &lt;name&gt;() 创建一个普通对象。如果您从 Realm 查询对象或使用 createObject 来管理对象
  • 那不是问题,因为我用new Item()创建项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多