gpt4 book ai didi

ios - 如何使用 HealthKit 获取特定日期的 24 小时 sleep 数据?

转载 作者:行者123 更新时间:2023-11-30 11:50:11 25 4
gpt4 key购买 nike

我熟悉获取 sleep 数据的典型方法,但事实证明,获取特定 24 小时窗口内的 sleep 时间有些困难。

我可以设置一个谓词来获取在特定时间内开始或结束的样本,但很多时候这些样本会跨越日期边界。如果我晚上 10 点 sleep ,凌晨 4 点起床,然后从早上 5 点睡到早上 8 点,那么很难从 10-4 样本的范围中获取昨天的部分。

典型的谓词可能看起来像这样(使用以下日期扩展):

extension Date {
var today: Date {
return Calendar.current.date(byAdding: .day, value: 0, to: midnight)!
}
var yesterday: Date {
return Calendar.current.date(byAdding: .day, value: -1, to: midnight)!
}
}

let predicate = HKQuery.predicateForSamples(withStart: Date().yesterday, end: Date().today, options: [])

然后获取样本,并执行某些操作来获取秒/分钟/小时:

let seconds = sample.endDate.timeIntervalSince(sample.startDate)

但是,当开始日期不一定是从昨天开始,或者结束日期不一定是在今天之前时,这会导致问题。

我可以开始在开始日期和结束日期周围做一些特殊的大小写,但它会变得有些复杂。有没有一种简单的方法可以获取昨天的 sleep 时间(从午夜到午夜的确切 24 小时窗口)?我觉得我一定是误解了一些关于 sleep 查询的基本知识,或者与此相关的时间数学。

最佳答案

HealthKit 无法插入 HKCategorySample 类型的查询结果。您的查询必须与您想要使用的整个 sleep 样本相匹配,并且您必须自己进行数学计算,以确定有多少样本属于您感兴趣的日期间隔。

关于ios - 如何使用 HealthKit 获取特定日期的 24 小时 sleep 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48413614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com