问题
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