如何将关系数据(例如 RealmList<Object>)预填充到 Realm 中

How to pre-populate relational data (e.g. RealmList<Object>) into Realm

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

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

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

我的数据模型:

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>()
}

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

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

1234,jay,pizza
5678,cindy,steak

然后狗文件看起来像这样,包含狗 ID、狗名,然后是人员(所有者)ID

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

在上面的例子中,jay 拥有 rover 和 spot,cindy 拥有 scraps。

领域 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 中。

您可以 command-click 文件名将多个文件导入 Realm Studio