【问题标题】:How to pre-populate relational data (e.g. RealmList<Object>) into Realm如何将关系数据(例如 RealmList<Object>)预填充到 Realm 中
【发布时间】:2020-10-02 21:05:54
【问题描述】:

是否可以将关系数据导入 Realm?我的 ObjectA 数据模型使用 List 具有一对多关系。

我使用 Realm Studio 从 CSV 的导入来预填充数据。我的大部分数据模型由字符串和整数组成。但我不确定如何在 CSV 中表示 List 数据类型。

作为一种解决方法,我将让我的应用在运行时使用对象填充领域。但是这种方法使用一次性代码,这让我觉得这是基本功能。必须有更好的方法!

我的数据模型:

class Person: Object {
    @objc dynamic var title: String = "" 
    @objc dynamic var id: Int = 0
}

class Dog: Object {
    @objc dynamic var id: Int = 0
    @objc dynamic var title: String = ""
    var owner = List<Person>()
}

【问题讨论】:

  • 在这里,我们正在寻找有关特定编码问题的问题 - 询问是否可能有点模糊。您是否有一些代码和示例数据可以让我们查看以了解该问题?请查看以下两个关于提问的指南:How do I ask a good question?How to create a Minimal, Complete, and Verifiable example。用详细信息和一些代码更新问题,我们将看看。
  • 欣赏指点。我用更多细节更新了问题,包括我的数据模型的代码示例。

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


【解决方案1】:

如果您想读取“关系数据”,您可以编写一个应用程序来读取该数据,填充您的领域对象并将其保存到领域。

在平面文件中表示关系数据通常具有一些与该数据相关联的公共键。例如人和狗。人员文件可能如下所示;人名、姓名和喜欢的食物

1234,jay,pizza
5678,cindy,steak

那么狗文件看起来像这样,带有狗 ID、狗名,然后是人(所有者)ID

1111,rover,1234
2222,spot,1234
3333,scraps,5678

在上面的示例中,jay 拥有 rover 和 spot,而 cindy 拥有碎片。

领域 PersonClass 对象将是

class PersonClass: Object {
   @objc dynamic var person_id = ""
   @objc dynamic var person_name = ""
   @objc dynamic var fav_food = ""
   let dogList = List<DogClass>()
}

然后是狗

class DogClass: Object {
   @objc dynamic var dog_id = ""
   @objc dynamic var dog_name = ""
   @objc dynamic var person_id = ""
}

该过程将是读取人员(创建人员对象),读取狗,遍历每只狗并将其添加到该人员的 dogList - 可以通过其 person_id 找到该人员。

理想情况下,最好在此结构中包含 primary_keys。

同样,您可以将所有狗和人读入 Realm Studio,并将狗添加到各自人的 dogList 中。

您可以通过命令单击文件名将多个文件导入 Realm Studio

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多