ios - 难以理解 Realm 中的 allObjects()

标签 ios swift realm

我正在制作一个使用 Realm 作为离线数据库的应用。问题是,当我调用 Workout.allObjects() 时,没有显示任何内容。我做了一些调试,发现结果如下

相关代码

class Workout: RLMObject {
    dynamic var name: String?
    dynamic var exercises: RLMArray = RLMArray(objectClassName: "Exercise")
    dynamic var numberOfWorkouts = 0

    convenience init(name: String) {
        self.init()
        self.name = name
    }
}


func createWorkoutObject() {
    let realm = RLMRealm.defaultRealm()
    try! realm.transactionWithBlock {
        workout = Workout()
    }
}

createWorkoutObject() 的末尾(带断点),我运行了 enter image description here

所以明明有一个Workout对象,但是Workout.allObjects()好像没有看到。

这是为什么?我很难理解我做错了什么。

最佳答案

allObjects() 方法只返回给定 Realm 管理的对象。在 createWorkoutObject() 中,您创建了一个 Workout 实例,但不要将它添加到 Realm 中。由于这个新对象不受 Realm 管理,allObjects() 不会返回它。

尝试:

func createWorkoutObject() {
    let realm = RLMRealm.defaultRealm()
    try! realm.transactionWithBlock {
        workout = Workout()
        realm.addObject(workout)
    }
}

关于ios - 难以理解 Realm 中的 allObjects(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922941/

相关文章:

ios - 是否有根据日期修改 Realm 对象而不必显式添加日期作为属性的方法?

Android Realm - 使用 Intent 传递 Realm 对象

php - 从 iOS 发送多部分 POST 并在 PHP $_POST 中读取参数?

objective-c - UIImageView isAnimating 是否在 4.0 SDK 中中断?

swift - 处理应用内购买

ios - RealmSwift 3.1.0 armv7 支持

ios - 在动态 UITableViewCell 的顶部添加一个单元格

ios - Xcode 10、带有 CoreNFC 的 Swift 4 应用程序在 iOS 12 上崩溃审查

ios - 如何使用 NSUserDefaults Swift 存储自定义对象数组

swift - Swift 中非文字值的枚举