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

问题描述

是否可以将关系数据导入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>()
}

解决方法

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

在平面文件中表示关系数据通常具有一些与该数据关联的通用键。例如人和狗。人员档案可能如下所示;人的身份证,姓名和最喜欢的食物

1234,jay,pizza
5678,cindy,steak

然后,狗文件看起来像这样,即狗ID,狗名和人(所有者)ID

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

在上面的示例中,杰伊拥有流浪者和现货,辛迪拥有废料。

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