问题描述
是否可以将关系数据导入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