Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从HealthKit获得每天的专注时间?_Ios_Swift_Healthkit_Hkhealthstore - Fatal编程技术网

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"
    }