如何使用swift在域中执行联接查询?

如何使用swift在域中执行联接查询?,swift,realm,Swift,Realm,我想执行连接查询 表1 班级学生 { 名称:String 类别代码:Int } 表2 类类代码 { 类别代码:Int 名称:String } 数据示例 学生: |名称|类别代码| |约翰| 001| |金| 002| 类别代码: |类代码|名称| |001 |计算机| |002 |数学| 我想得到输出-?约翰,计算机 如何在Realm中执行查询?Realm是一个基于对象的数据库,因此查询中连接的概念不适用于它 在这种特殊情况下,将类代码对象设置为student类中的列表是合适的。像这样: cla

我想执行连接查询

表1 班级学生 { 名称:String 类别代码:Int } 表2 类类代码 { 类别代码:Int 名称:String } 数据示例

学生: |名称|类别代码| |约翰| 001| |金| 002| 类别代码: |类代码|名称| |001 |计算机| |002 |数学| 我想得到输出-?约翰,计算机


如何在Realm中执行查询?

Realm是一个基于对象的数据库,因此查询中连接的概念不适用于它

在这种特殊情况下,将类代码对象设置为student类中的列表是合适的。像这样:

class Class: Object {
   dynamic var classCode = 0
   dynamic var name = ""
}

class Student: Object {
   dynamic var name = ""
   let classes = List<Class>()
}

--- 

let realm = try! Realm()

let computerClass = Class()
computerClass.classCode = 1
computerClass.name = "Computer"

let newStudent = Student()
newStudent.name = "John"
newStudent.classes.append(computerClass)

try! realm.write {
    realm.add(computerClass)
    realm.add(newStudent)
}
领域列表对象不存储对象实例的副本;它们仅在其表中存储对相应对象的引用。通过这种方式,它复制了连接查询中所期望的相同类型的设置


如果您还需要澄清,请告诉我!:

我认为你应该做些努力,描述一下你遇到的问题,我相信你是用SQL的方式思考的。不过还不错。无论如何,Realm允许一对一和一对多的关系。检查:我建议您在student类中创建一个classcode属性。然后这些信息就可以像myStudent.class一样简单地访问了。name@Orlando:谢谢!!班级学生{name:String,class:classcode}对吗?领域是无连接数据库吗?只有插入对象才能在2个表之间插入所有数据?@ttoggaiman我不知道域是否不是联接数据库,我从未尝试过这样做,因为它提供的关系仅适用于这种情况。您编写的对象将正常工作。学生类对象将与您指定的类代码实例相链接。@Oralando:谢谢您的回答,如果我有一个低数据量的ex student.csv和classcode.csv,我有一个问题,我刚刚使用realm browser导入了csv,该浏览器创建了2个对象,但没有关系。。在这种情况下。。。我如何建立关系或。。我怎样才能得到正确的数据。。如果我使用mssql或mysql,从学生a中选择*,类代码b和a.classcode=b.classcode结果->约翰001 001领域中的计算机如何从CSVFile创建的领域中查询我有一个问题..如果学生有100行,每个学生都有computerclass。。然后计算机类制作了100个对象?或者计算机类是由所有对象区分的?这取决于每个学生指向哪个类对象。如果只有一个类对象存在,并且这100个学生对象中的每一个都指向它,那么很容易就有100个学生对象,只有一个类对象: