ios - Realm 对象字段有时为零

标签 ios swift realm

我对 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/

相关文章:

ios - 在 iOS XCode 项目中更改产品名称宏

ios - 在 swift 3 中重新加载部分方法?

swift - 我的 tableview 突然停止滚动

swift - Xcode 11 Swift 5 CryptoKit 共享 SymmetricKey

swift - 使用多个必需的启动器初始化 Realm 对象类

ios - NSNumber numberFromString 不放置小数

iphone - 在 UITextView 中创建一个 UIbutton 和 UIImageview

Android:来自错误线程的 Realm 访问。 Realm 对象只能在创建它们的线程上访问

通过枚举快速递增

java - 合并多个 RealmList 并对结果列表进行排序?