我面临的问题是,我试图从跑步锻炼中获得潜在的GPS点,但没有找到锻炼。
下面的第一个函数fetchRunningWorkouts
完成得很好,它是在fetchRunningWorkoutRoute
失败而没有找到数据时完成的。我可以看到设备上有可用的运行,我可以看到我有所需查询的适当授权。
注意:为了清楚起见,我调用KHealthStore().execute()
func fetchRunningWorkouts() {
// Create a predicate to filter for running workouts
let workoutPredicate = HKQuery.predicateForWorkouts(with: .running)
// Create a query to fetch running workouts
let workoutQuery = HKSampleQuery(
sampleType: HKWorkoutType.workoutType(),
predicate: workoutPredicate,
limit: 8,
sortDescriptors: nil
) { (query, samples, error) in
fetchRunningWorkoutRoute(workout: workout)
....
}
func fetchRunningWorkoutRoute(workout: HKWorkout) {
let workoutRouteQuery = HKSampleQuery(
sampleType: HKSeriesType.workoutRoute(),
predicate: HKQuery.predicateForObjects(from: workout),
limit: HKObjectQueryNoLimit,
sortDescriptors: nil
) { (query, samplesOrNil, errorOrNil) in
guard errorOrNil == nil else {
print("HealthKit query error: \(errorOrNil!.localizedDescription)")
return
}
guard let samples = samplesOrNil as? [HKWorkoutRoute], let route = samples.first else {
print("No workout route found in HealthKit.")
return
}
....
}
1条答案
按热度按时间cygmwpex1#
万一有人发现这个我想出来了。这是更新的功能。
func getLastWorkouts(){ let workoutType = HKSampleType.workoutType()
}