Realm-iOS:保存后对象引用设置为nil [英] Realm-iOS: Object reference set to nil after save
问题描述
我有2个班级:公司和员工.两者都继承Realm Object 类.
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"
}
}
填充对象
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)")
结果:
之前:员工{ 名称= Sachin; 年龄= 35; }
在添加之前:员工{ 名称= Sachin; 年龄= 35; }
区块中:nil
之后:无
Before: Employee { name = Sachin; age = 35; }
Before Add: Employee { name = Sachin; age = 35; }
In Block: nil
After: nil
问题:
为什么realm.add()
操作后Company对象的employee属性为nil?有什么想法吗?
QUESTION:
Why is the employee property of the Company object nil after the realm.add()
operation? Any thoughts?
推荐答案
对于所有Realm Swift属性(List
除外),您需要将这些属性声明为dynamic
.将模型定义更改为以下内容将有所帮助!
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"
}
}
这篇关于Realm-iOS:保存后对象引用设置为nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!