领域对象字段有时是零

时间:2016-12-19 17:09:06

标签: ios swift realm

我对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]
    }

1 个答案:

答案 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)
}