我有一个 Book
类和一个 ReadingSession
类,其关系声明如下:
public class Book: Object {
// (…)
var readingSessions: [ReadingSession] {
return linkingObjects(ReadingSession.self, forProperty: "book")
}
}
public class ReadingSession: Object {
// (…)
dynamic var book: Book?
}
现在我想在 readingSessions
上使用 Realm 的 Results
' 方法,例如 filter()
和 sum()
> 属性,但我不能,因为它是一个常规数组。
因此,我向我的 Book
类添加了另一个计算属性:
var sessions: Results<ReadingSession> {
let realm = try! Realm()
return realm.objects(ReadingSession).filter("book == %@", self)
}
现在,当我需要使用这些方法时,我会使用 sessions
属性,而当我不需要时,我会使用 readingSessions
数组。
所以我的问题是:为什么 Realm 文档中推荐使用 linkingObjects()
方法的第一种方法?我是否有理由不应该使用 Realm 的 Results
将该属性完全替换为我的最新属性?根据我的经验,除了额外的方法之外,使用 Realm 的 Results
通常要快得多,即使我需要常规数组,我也可以直接转换 Results
。这样做有什么坏处吗?
提前致谢,
丹尼尔
最佳答案
目前,没有比您目前正在做的更好的方法了。使用 linkingObjects 可能会更快,因为可以在内部双向导航关系,并且不需要针对完整数据集评估查询,因此它还取决于数据集的大小。我们计划改变这种行为,如 issue #1508 中所示。 .
关于ios - Realm linkingObjects 数组与结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958758/