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

Swift中如何通过HealthKit获取用户所有不同类型的Workout记录

解决HealthKit获取所有Workout类型的问题
  • 移除单一类型限制:你之前的谓词指定了单一Workout类型(比如.cycling),所以只返回同类型数据。要获取所有类型,直接使用不带类型参数的Workout谓词即可。
  • 修改后的Swift代码示例:
// 初始化Workout类型
let workoutType = HKObjectType.workoutType()

// 创建获取所有Workout的谓词
let predicate = HKQuery.predicateForWorkouts()

// 执行查询(后续逻辑和你现有代码一致)
let query = HKSampleQuery(sampleType: workoutType, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { query, samples, error in
    guard let workouts = samples as? [HKWorkout], error == nil else {
        // 处理错误逻辑
        return
    }
    
    // 按Workout类型分组,得到不同类型的集合
    let groupedByType = Dictionary(grouping: workouts) { $0.activityType }
    
    // 将分组后的数据转换成JS可识别的格式(比如JSON),再传递给React Native侧
}

healthStore.execute(query)
  • 分组数据说明:通过Dictionary(grouping:)把所有Workout按activityType分组后,你会得到类似[.running: [HKWorkout], .cycling: [HKWorkout], .pilates: [HKWorkout]]的结构,转换成JSON后在JavaScript里就能处理成你想要的Running、Cycling等分组数据。

内容的提问来源于stack exchange,提问作者Antonio Rodríguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:15:45