Ios 如何从HealthKit获得每天的专注时间?
我试图计算用户在一天中有多少分钟,所以我尝试这样做:Ios 如何从HealthKit获得每天的专注时间?,ios,swift,healthkit,hkhealthstore,Ios,Swift,Healthkit,Hkhealthstore,我试图计算用户在一天中有多少分钟,所以我尝试这样做: func getDailyMindfulnessTime(completion: @escaping (TimeInterval) -> Void) { let sampleType = HKSampleType.categoryType(forIdentifier: .mindfulSession)! let sortDescriptor = NSSortDescriptor(key: HKSampleSortIden
func getDailyMindfulnessTime(completion: @escaping (TimeInterval) -> Void) {
let sampleType = HKSampleType.categoryType(forIdentifier: .mindfulSession)!
let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierEndDate, ascending: false)
let startDate = Calendar.current.startOfDay(for: Date())
let endDate = Calendar.current.date(byAdding: .day, value: 1, to: startDate)
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: .strictStartDate)
let query = HKSampleQuery(sampleType: sampleType, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: [sortDescriptor]) { (_, results, error) in
if error != nil {
fatalError("*** HealthKit returned error while trying to query today's mindful sessions. The error was: \(String(describing: error))")
}
var totalTime = TimeInterval()
if let results = results {
for result in results {
totalTime += result.endDate.timeIntervalSince(startDate)
}
} else {
completion(0)
}
}
healthStore.execute(query)
}
然后:
但这似乎不起作用。事实上,标签的文本与我在Interface Builder中设置的文本相同。我已经将这种模式用于其他HealthKit数据,如每日步数,但我不知道为什么这没有效果
编辑:没关系,这是一个非常愚蠢的错误,我应该在for-in循环后面加上
completion(totalTime)
。哦没关系,这是一个非常愚蠢的错误,我应该在for-in循环后面加上completion(totalTime)。OOPS什么东西不起作用?标签只是不改变它的文本。您是否在self.冥想TodayMinutesLabel.text设置了断点,它是否被执行?没有断点。。。但是完成处理程序似乎永远不会执行,因为标签没有改变,如果我在其中放入print语句,它就不会执行
healthStore.getDailyMindfulnessTime { (result) in
self.meditationTodayMinutesLabel.text = "\(result) minutes today"
}