【问题标题】:How to stop updating the field or variable in object while copyToRealmOrUpdate in realm如何在领域中的 copyToRealmOrUpdate 时停止更新对象中的字段或变量
【发布时间】:2017-08-23 22:19:50
【问题描述】:
Pojo Class:

public class ChannelResponse extends RealmObject{
   private RealmList<TvChannel> tv_channel;
}

public class TvChannel extends RealmObject{
@PrimaryKey
private String id;
private String stream_display_name;
private String stream_icon;
private String streaming_url;
private int isFavorite;
}

这里 isFavorite 是 int,当我从 API channelResponse 和 api json 对象 TvChannel 中获取时更新其他字段时不应该更新它有 isFavorite feild。

我是这样更新的:

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealmOrUpdate(channelResponse);
realm.commitTransaction();
realm.close();

【问题讨论】:

  • 查询对象是否存在,将其isFavorite 保存到布尔变量中,例如copyToRealmOrUpdate() 并设置您保存在copyToRealmOrUpdate() 返回的代理上的isFavorite 值?
  • 您不能使用copyToRealmOrUpdate 部分更新对象。按照建议,您可以查询它,然后更新您想要的任何字段。如果您仍然想使用copyToRealmOrUpdate,那么您需要重新设计您的模型以分离isFavorite 的概念。例如,您可以让 POJO 仅定义电视频道,并为包含每个用户的首选频道列表的类建模。这样,您就可以将更新频道详细信息的关注与用户建立他最喜欢的列表分开

标签: android realm insert-update


【解决方案1】:

查询对象是否存在

如果是,将其 isFavorite 保存到布尔变量中

说copyToRealmOrUpdate()

你收到一个代理

然后在您从 copyToRealmOrUpdate() 收到的代理上调用 setFavorite(isFavorite)。

【讨论】:

    【解决方案2】:

    您之前是否将@Ignore 应用于isFavorite 字段?

    【讨论】:

    • 如果我应用@Ignore,那么我将无法使用领域查询保存或检索领域数据库中的数据以供收藏。
    • 您是否允许 isFavorite 为 null?
    • 它的整数默认设置为 0。我的问题是更新时它不应该更新 isFavorite 字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    相关资源
    最近更新 更多