You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Realm技术问题:如何对Results<Relax>中所有duration字段求和

解决Realm Results集合中duration字段求和的问题

嘿,我来帮你搞定这个求和需求!针对Realm的Results<Relax>集合,有几种简单可行的方法来计算所有duration字段的总和:

  • 直接用reduce累加(推荐)
    Realm的Results类型遵循Swift的Sequence协议,所以可以直接调用reduce方法来逐个累加数值,而且这种方式不会一次性把所有数据加载到内存,性能更友好:

    let totalDuration = relaxResults.reduce(0.0) { accumulatedSum, relaxItem in
        accumulatedSum + relaxItem.duration
    }
    // 或者更简洁的写法:
    let totalDuration = relaxResults.reduce(0.0) { $0 + $1.duration }
    
  • 用reduce(into:)提升性能
    如果你的数据集比较大,推荐用reduce(into:),它能避免累加过程中的不必要拷贝,效率更高:

    let totalDuration = relaxResults.reduce(into: 0.0) { total, relaxItem in
        total += relaxItem.duration
    }
    
  • 转成普通数组后求和
    要是你更习惯操作Swift原生数组,也可以先把Realm的Results转换成普通数组,再用熟悉的方法计算:

    // 先将Realm集合转为原生数组
    let relaxArray = Array(relaxResults)
    // 再累加求和
    let totalDuration = relaxArray.reduce(0.0) { sum, relax in sum + relax.duration }
    

需要注意的是,要确保你的Relax模型里duration字段是数值类型(比如Double或Float),从你提供的数据来看,它是带小数的数值,这个前提是满足的。

内容的提问来源于stack exchange,提问作者Chris Campbell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:39:27