Чтение внимательных минут - PullRequest
0 голосов
/ 13 апреля 2020

Добрый день,

Мое приложение для фитнеса скоро появится, и я могу запросить HealthKit для других данных, но мне тяжело собирать памятные минуты. Вот что у меня есть:

//MARK: - Read Mindful Minutes
func readMindfulMinutes(date: Date) {

    guard let mindfulMinutes = HKSampleType.categoryType(forIdentifier: .mindfulSession) else {
        print("Sample type not available")
        return
    }

    let startDate = convertStartDate(StartDate: date)
    let endDate = convertEndDate(EndDate: date)
    let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: .strictStartDate)

    let mindfulMinutesQuery = HKSampleQuery(sampleType: mindfulMinutes,
                                            predicate: predicate,
                                            limit: HKObjectQueryNoLimit,
                                            sortDescriptors: nil) {
                                                (query, samples, error) in

                                    guard
                                        error == nil,
                                    let quantitySamples = samples as? [HKQuantitySample] else {
                                            print("Something went wrong: \(String(describing: error))")
                                            return
                                    }

                                        let total = quantitySamples.reduce(0.0) { $0 + $1.quantity.doubleValue(for: HKUnit.minute()) }
                                    DispatchQueue.main.async {
                                        self.userMindfulMinutes = total
                                        print("userMindfulMinutes = \(self.userMindfulMinutes)")
                                    }

    }
    HKHealthStore().execute(mindfulMinutesQuery)
}

}

Мне всегда говорят «Что-то пошло не так: ноль» из оператора печати. Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 14 апреля 2020

Вы не можете принудить образец Категории к количеству. Вот что терпит неудачу. Вы должны вычислить минуты из каждой записи сеанса. Попробуйте;

  let totalMeditationTime = samples?.map(calculateMinutes).reduce(0, { $0 + $1 }) ?? 0

и определите calcMinutes как;

   func calculateMinutes(sample: HKSample) -> TimeInterval
   {
       return sample.endDate.timeIntervalSince(sample.startDate)
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...