我对 Realm 中的对象有一个奇怪的问题。当我从 Realm 数据库中获取一个对象时,有时它的一些字段(它只发生在 RealmOptionals
上)在访问它们之后为 nil。
但这真的很奇怪,因为如果我在访问那些字段之前放置一个断点,然后我在 lldb
上执行 po object.field
,那么 nil 字段就会消失。
我已经看到,也许我忘记了将这些字段设置为“动态”,但在我的情况下,按照 Realm 文档,我必须使用 RealmOptional 作为可选 bool 值。
有谁知道这里的问题是什么?
提前致谢。
编辑:我用来从 Realm 中检索和对象的方法是:
func getObject(atPosition position:Int)->Object{
let objects = realm.objects(Object.self)
return objects[position]
}
最佳答案
我不太确定你在问什么。如果 Realm 属性被标记为可选,那么它的初始值将为 nil
正如预期的那样。
您是正确的,因为您需要使用 let propertyValue = RealmOptional<Bool>()
而不是 dynamic
因为普通的 bool 数据类型不能表达 nil
自己的值(value)。所以这是 dynamic
的一个异常(exception)属性规则。
另请注意,您需要使用 optional.value
设置一个可选的 bool 值:
class Dog: Object {
dynamic var name = ""
dynamic var age = 0
let vaccinated = RealmOptional<Bool>()
}
let realm = try! Realm()
let myDog = Dog()
myDog.name = "Sherlock Bones"
myDog.age = 4
myDog.vaccinated.value = true
try! realm.write {
realm.add(myDog)
}
关于ios - Realm 对象字段有时为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227657/