Realm-iOS: Object reference set to nil after save

帅比萌擦擦* 提交于 2020-01-13 19:09:33

问题


I have 2 classes: Company and Employee. Both inherit the Realm Object class.

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"
   }
}

Populate the objects

    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)")

RESULT:

Before: Employee { name = Sachin; age = 35; }
Before Add: Employee { name = Sachin; age = 35; }
In Block: nil
After: nil

QUESTION: Why is the employee property of the Company object nil after the realm.add() operation? Any thoughts?


回答1:


For all Realm Swift properties (except for List), you need to declare the properties as dynamic. Changing your model definitions to the following should help!

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"
   }
}


来源:https://stackoverflow.com/questions/31118060/realm-ios-object-reference-set-to-nil-after-save

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!