[英]Realm linkingObjects array vs. Results
我有一个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
可能会更快,因为可以在内部双向导航该关系,并且不需要为整个数据集评估查询,因此它也取决于其大小。 我们计划更改此行为,如问题#1508所示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.