【问题标题】:Why would per-minute step count and per-hour step count from HealthKit differ?为什么 HealthKit 的每分钟步数和每小时步数会不同?
【发布时间】:2017-05-11 18:08:53
【问题描述】:

我正在使用类似于Get total step count for every date in HealthKit 中的 Swift 示例的方法从 HealthKit 获取步数。效果很好。

我的偏好是获取每分钟或每小时的步数,而不是该代码执行的每天的步数——虽然每小时步数的总和与 HealthKit 报告的每日步数完全匹配,但每分钟步数的总和步数与每小时或每天的总和不匹配。

有没有办法让每分钟的步骤摘要起作用?或者对于为什么它们有很大不同有一个合乎逻辑的答案吗?

与上面的代码和我的代码的唯一区别是每小时计算(工作相同):

interval.hour = 1

var anchorComponents = calendar.dateComponents([.hour, .day, .month, .year], from: NSDate() as Date)

以及以下每分钟计算(通常超过计数):

interval.minute = 1

var anchorComponents = calendar.dateComponents([.minute, .hour, .day, .month, .year], from: NSDate() as Date)

显然我错过了一些东西。感谢您提供任何见解。

埃里克

【问题讨论】:

  • 你有什么解决办法吗?
  • 不幸的是不是——我每小时都在抓它。让我知道你是否找到了有用的东西。谢谢!

标签: healthkit


【解决方案1】:

查询谓词有一些选项(.strictStartDate、.strictEndDate),用于确定查询是否找到所有严格在区间(严格停止开始日期)内的样本,或者是否会找到包括在区间外停止或开始的样本。

我怀疑您的步骤样本可能会跨越分钟界限,并且取决于您如何定义间隔,这将产生显着差异。

我使用每日摘要,并将时间间隔定义为(严格,不严格),以便跨越两天的样本仅计入它开始的那一天。(Swift 4)

let predicate = HKQuery.predicateForSamples(withStart: start, end: end, options: .strictStartDate)

我注意到您链接到的 SO 问题中的最终答案也定义了一个(严格,非严格)区间。

【讨论】:

  • 大眼睛!非常感谢您注意到这一点。这解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多