如何创建一个带有limit降序排列的HKAnchoredObjectQuery

问题描述 投票:0回答:2

在我们的一个项目中。我必须获取过去 30 天的健康套件数据。

我们使用 HKAnchoredObjectQuery 来获取历史数据。第一次如果我们尝试获取它会返回大量数据。所以我们的 API 无法处理那么多数据。因此,我们在查询中使用了限制,但现在的问题是它按升序返回,但我们实际上想要始终是最新的数据。无论如何,是否可以使用 HKAnchoredObjectQuery 以降序排列限制来获取健康数据。

目前我们是这样获取的

    HKAnchoredObjectQuery *anchoredQuery = [[HKAnchoredObjectQuery alloc] initWithType:quantityType predicate:predicate anchor:anchor limit:1 resultsHandler:handler];

    [healthStore executeQuery:anchoredQuery];

注意:这可以通过设置本地数据库来实现。但我们不想重复相同的数据

提前致谢。

ios objective-c sorting healthkit
2个回答
2
投票

HKAnchoredObjectQuery
不支持按设计排序。通过“anchor”查询需要HealthKit按照anchor对结果进行排序。如果您想使用排序顺序,则必须使用
HKSampleQuery
来代替。


0
投票

您处于异步上下文中:

let healthStore = HKHealthStore()
let query = HKSampleQueryDescriptor(
            predicates: [.workout()],
            sortDescriptors: [SortDescriptor(\.endDate, order: .reverse)],
            limit: 10
        )
        
let result = try await query.result(for: healthStore)
© www.soinside.com 2019 - 2024. All rights reserved.