Realm Swift主键无法检索正确的值

时间:2019-07-16 14:18:22

标签: swift realm

我试图在我的领域数据库中检索给定对象的属性。除了主键(始终具有其默认值)以外,每个属性都可以正确显示。

例如:

A.swift


    @objcMembers class A: Object, Codable{
        var id: Int64 = 0
        dynamic var otherProperty: String?

        private enum CodingKeys: String, CodingKey {
            case id
            case otherProperty
        }

        override static func primaryKey() -> String{
            return "id"
        }
    }

假设我们有类 A ,如上面的示例所示。当我使用给定的 id = 10 otherProperty =“ other属性” 将A对象添加到领域数据库中时,它可以正确保存。我什至可以在Realm Browser中看到它。

现在,我正在尝试使用以下代码:


    let realm = try! Realm()
    let aObj = realm.objects(A.self).first
    print(aObj!.id) //printing 0
    print(aObj!.otherProperty) //printing "other property"

显然,这里的问题是,我没有像预期的那样在 aObj 中收到 id = 10 的值。

我尝试调试它以查看问题所在,并且最奇怪的事情在那里发生。 po aObj将正确打印我的对象:


    Optional<A>
       some: A{
          id = 10;
          otherProperty="other property"
    }

但是,如果我尝试仅打印id,那么如果运行po aObj!.id命令,则会得到以下结果:


    Optional<Int64>
      - some : 0

1 个答案:

答案 0 :(得分:1)

让您的ID动态化

dynamic var id: Int64 = 0

realm.add(A(value: ["id": 10, "otherProperty": "otherProperty"]) , update: true)

print("aObj?.id") //printing 10