Realm-iOS:保存后对象引用设置为nil

gra*_*ito 2 realm ios

我有两个班:公司员工.两者都继承了Realm Object类.

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"
   }
}
Run Code Online (Sandbox Code Playgroud)

填充对象

    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)")
Run Code Online (Sandbox Code Playgroud)

结果:

之前:员工{name = Sachin; 年龄= 35岁; }
添加之前:员工{名=萨钦; 年龄= 35岁; }
在方框:无
后:无

问题: 为什么公司的员工财产在realm.add()运营后对象为零?有什么想法吗?

seg*_*ins 5

对于所有Realm Swift属性(除外List),您需要将属性声明为dynamic.将模型定义更改为以下内容应该有所帮助!

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"
   }
}
Run Code Online (Sandbox Code Playgroud)