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
相关产品推荐
相关产品推荐

