ios - Realm linkingObjects 数组与结果

标签 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?
}

现在我想在 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/

相关文章:

iphone - 使用 CoreLocation 防止零星坐标

ios - 在 iOS 11+ (Swift) 中从推送通知操作按钮打开应用程序?

java - Realm :通过 id 创建关系

java - Android 中 Realm 查询返回不完整的结果集

ios - Realm 添加带有更新的对象 - 忽略缺失值

ios - Xcode 10.2 中的 Realm Swift - Swift 5.0 编译器无法导入错误 : Module compiled with Swift 4. 2

ios - 如何在ios中获取今天日期的开始和结束时间?

iphone - 模拟 ScrollView 内的拖动

ios - 如何改变 storyboard 中 tableHeaderView 的高度?

ios - 这个闭包怎么写?