gpt4 book ai didi

java - Android Realm : Store a non-RealmObject inside a RealmObject one

转载 作者:行者123 更新时间:2023-11-30 10:48:55 25 4
gpt4 key购买 nike

直接上代码。我们有两个类:

class Rocket extends RealmObject
{
@PrimaryKey
private long id;
private String name;
private Payload pl;
}

class Payload
{
private String name;
private double mass;
}

如何在 Realm 中存储火箭?

  1. 我可以手动将 Payload 序列化为某种字符串,然后将其与 Rocket 一起保存。但是它很慢。
  2. 我可以从 RealmObject 扩展 Payload 并将其保存到表中。但是如果我这样做,我应该在每次删除父 Rocket 时删除 Payload。这绝对不是一个选择,因为模型变得非常困惑和复杂。

如果需要,我可以实现 Serializable 或 Parcelable 接口(interface),但我确实需要将我的对象保存到 Realm 中。

谢谢。

最佳答案

看起来您对明显解决方案(扩展 RealmObject)的主要关注是您希望在删除父级 Rocket 时删除 Payload 。不幸的是,级联删除are not yet supported .您的选择是:

  • 序列化为字符串(注意这必须在 Rocket 对象之外完成)
  • 使 Payload 扩展 RealmObject 并为其提供与您的 Rocket 对象相同的主键,然后同时删除它们(通过相同的键)

我推荐第二种解决方案,以及类似以下的方法:

private void deleteRocket(long id) {
realm.where(Rocket.class).equalTo("id", id).findFirst().removeFromRealm();
realm.where(Payload.class).equalTo("id", id).findFirst().removeFromRealm();
}

关于java - Android Realm : Store a non-RealmObject inside a RealmObject one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com