在我们的一个项目中。我必须获取过去 30 天的健康套件数据。
我们使用 HKAnchoredObjectQuery 来获取历史数据。第一次如果我们尝试获取它会返回大量数据。所以我们的 API 无法处理那么多数据。因此,我们在查询中使用了限制,但现在的问题是它按升序返回,但我们实际上想要始终是最新的数据。无论如何,是否可以使用 HKAnchoredObjectQuery 以降序排列限制来获取健康数据。
目前我们是这样获取的
HKAnchoredObjectQuery *anchoredQuery = [[HKAnchoredObjectQuery alloc] initWithType:quantityType predicate:predicate anchor:anchor limit:1 resultsHandler:handler];
[healthStore executeQuery:anchoredQuery];
注意:这可以通过设置本地数据库来实现。但我们不想重复相同的数据
提前致谢。
HKAnchoredObjectQuery
不支持按设计排序。通过“anchor”查询需要HealthKit按照anchor对结果进行排序。如果您想使用排序顺序,则必须使用 HKSampleQuery
来代替。
您处于异步上下文中:
let healthStore = HKHealthStore()
let query = HKSampleQueryDescriptor(
predicates: [.workout()],
sortDescriptors: [SortDescriptor(\.endDate, order: .reverse)],
limit: 10
)
let result = try await query.result(for: healthStore)