我对Realm中的对象有一个奇怪的问题。当我从Realm数据库中获取一个对象时,有时它的一些字段(它只发生在RealmOptionals
上)在访问它们之后是零。
但这真的很奇怪,因为如果我在访问那些字段之前放置了一个断点,并且我在po object.field
上执行了lldb
,那么之后的nil字段就消失了。
我已经看到,也许我忘了将这些字段设置为'动态'但在我的情况下,并且在Realm docs之后,我必须使用RealmOptional作为可选的布尔值。
有谁知道这里的问题是什么?
提前致谢。
编辑:我用来从Realm检索和反对的方法是:
func getObject(atPosition position:Int)->Object{
let objects = realm.objects(Object.self)
return objects[position]
}
答案 0 :(得分:2)
我不确定你在问什么。如果Realm属性标记为可选,则其初始值将为nil
,如预期的那样。
你是正确的,你需要使用let propertyValue = RealmOptional<Bool>()
而不是dynamic
,因为普通的布尔数据类型不能自己表达nil
值。所以这是dynamic
属性规则的例外。
另请注意,您需要使用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)
}