领域iOS:保存后对象引用设置为零

领域iOS:保存后对象引用设置为零,ios,realm,Ios,Realm,我有两门课:公司和员工。两者都继承领域对象类 class Company:Object { var name:String = "" var employee:Employee? override static func primaryKey() -> String? { return "name" } } class Employee:Object { var name:String = "" var age:Int = 0

我有两门课:公司员工。两者都继承领域对象

class Company:Object {
    var name:String = ""
    var employee:Employee?

    override static func primaryKey() -> String? {
       return "name"
   }
}

class Employee:Object {
   var name:String = ""
   var age:Int = 0

   override static func primaryKey() -> String? {
      return "name"
   }
}
填充对象

    var emp = Employee()
    emp.name = "Sachin"
    emp.age = 35

    var comp = Company()
    comp.name = "BCCI"

    comp.employee = emp

    println("Before: \(comp.employee)")

    var realm = Realm()
    realm.write {
        println("Before Add: \(comp.employee)")
        realm.add(comp, update: true)
        println("In Block: \(comp.employee)")
    }

    println("After: \(comp.employee)")
结果:

前:员工{ name=Sachin; 年龄=35岁; }
添加前:员工{ name=Sachin; 年龄=35岁; }
在块中:无
之后:零

问题:
为什么公司对象的employee属性在
realm.add()操作之后为零?有什么想法吗?

对于所有领域Swift属性(除了
列表
),您需要将属性声明为
动态
。将模型定义更改为以下内容应该会有所帮助

class Company:Object {
    dynamic var name:String = ""
    dynamic var employee:Employee?

    override static func primaryKey() -> String? {
       return "name"
   }
}

class Employee:Object {
   dynamic var name:String = ""
   dynamic var age:Int = 0

   override static func primaryKey() -> String? {
      return "name"
   }
}

正如-in
write
,但在
add
之前……它也会打印write块中的值,它会在add之后设置为nil,而lldb绝对不会说什么?