我试图在我的领域数据库中检索给定对象的属性。除了主键(始终具有其默认值)以外,每个属性都可以正确显示。
例如:
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
答案 0 :(得分:1)
让您的ID动态化
dynamic var id: Int64 = 0
realm.add(A(value: ["id": 10, "otherProperty": "otherProperty"]) , update: true)
print("aObj?.id") //printing 10