我正在制作一个使用 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()
的末尾(带断点),我运行了
所以明明有一个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/