Realm-iOS: la reference d'object est définie sur zéro après l'logging

J'ai 2 classs: Compagnie et employé . Les deux héritent de la class Realm Object .

class Company:Object { var name:Ssortingng = "" var employee:Employee? override static func primaryKey() -> Ssortingng? { return "name" } } class Employee:Object { var name:Ssortingng = "" var age:Int = 0 override static func primaryKey() -> Ssortingng? { return "name" } } 

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

RÉSULTAT:

Avant: Employé {name = Sachin; âge = 35; }
Avant d'append: Employé {name = Sachin; âge = 35; }
En bloc: néant
Après: néant

QUESTION: Pourquoi la propriété employee de l'object Company est-elle nulle après l'opération realm.add() ? Des pensées?

Pour toutes les propriétés Realm Swift (sauf List ), vous devez déclarer les propriétés comme dynamic . Changer les définitions de votre model à la suivante devrait aider!

 class Company:Object { dynamic var name:Ssortingng = "" dynamic var employee:Employee? override static func primaryKey() -> Ssortingng? { return "name" } } class Employee:Object { dynamic var name:Ssortingng = "" dynamic var age:Int = 0 override static func primaryKey() -> Ssortingng? { return "name" } }