Realm-iOS:保存后对象引用设置为nil [英] Realm-iOS: Object reference set to nil after save

查看:107
本文介绍了Realm-iOS:保存后对象引用设置为nil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆