Realm-iOS: object reference set to zero after saving

I have 2 classes: Company and Employee . Both inherit from 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" } } 

Fill in 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 adding: Employee {name = Sachin; age = 35; }
In the block: no
After: nil

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

+2
source share
1 answer

For all Realm Swift properties (except 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" } } 
+5
source

Source: https://habr.com/ru/post/1243202/


All Articles