领域链接对象数组与结果

时间:2016-01-23 01:59:44

标签: ios swift realm

我有一个Book类和一个ReadingSession类,关系声明如下:

public class Book: Object {
    // (…)
    var readingSessions: [ReadingSession] {
        return linkingObjects(ReadingSession.self, forProperty: "book")
    }
}

public class ReadingSession: Object {
    // (…)
    dynamic var book: Book?
}

现在我想在Results属性上使用Realm的filter()'方法,例如sum()readingSessions,但我不能,因为它'常规阵列。

所以我在我的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。这样做有什么不利之处吗?

提前致谢,

丹尼尔

1 个答案:

答案 0 :(得分:0)

目前,没有比你现在做的更好的方法了。使用linkingObjects可能会更快,因为可以在内部双向导航关系,并且不需要针对完整数据集评估查询,因此它还取决于其大小。我们计划改变issue #1508中的行为。