Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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_Objective C_Swift_Healthkit - Fatal编程技术网

Ios HealthKit步骤计算一段时间后被卡住的次数

Ios HealthKit步骤计算一段时间后被卡住的次数,ios,objective-c,swift,healthkit,Ios,Objective C,Swift,Healthkit,我正在开发一个步骤计数应用程序。每一分钟调用一次Bellow方法。结果表明该方法是准确的。但过了一段时间,它开始返回所有值零。是否有任何限制,比如一小时最多可以有20个请求。或者我的代码有问题吗 func fetchStepsHistory(completion: @escaping (_ today: Int, _ yesterday: Int, _ average: Int) -> ()) { var sevenDaysTotal = 0 var todayStep

我正在开发一个步骤计数应用程序。每一分钟调用一次Bellow方法。结果表明该方法是准确的。但过了一段时间,它开始返回所有值零。是否有任何限制,比如一小时最多可以有20个请求。或者我的代码有问题吗

func fetchStepsHistory(completion: @escaping (_ today: Int, _ yesterday: Int, _ average: Int) -> ()) {


    var sevenDaysTotal = 0
    var todaySteps = 0
    var yesterdaySteps = 0

    let stepsQuantityType = HKQuantityType.quantityType(forIdentifier: .stepCount)!

    let endDate = Date()
    let startDate = Calendar.current.date(byAdding: DateComponents(day: -7), to: Date())

    var interval = DateComponents()
    interval.day = 1

    // start from midnight
    let calendar = Calendar.current
    let anchorDate = calendar.date(bySettingHour: 0, minute: 0, second: 0, of: Date())

    let query = HKStatisticsCollectionQuery(quantityType: stepsQuantityType,
                                        quantitySamplePredicate: nil,
                                        options: [.cumulativeSum],
                                        anchorDate: anchorDate!,
                                        intervalComponents: interval)
    query.initialResultsHandler = { _, results, error in
        guard let results = results else {
            completion(todaySteps, yesterdaySteps, sevenDaysTotal/7)
            print(error?.localizedDescription ?? "Error :- ")
            return
    }

        
    results.enumerateStatistics(from: startDate!, to: endDate) { statistics, _ in
        if let sum = statistics.sumQuantity() {
            let steps = sum.doubleValue(for: HKUnit.count())
            //print("Amount of steps Widget: \(steps), date: \(statistics.startDate)")
            //DispatchQueue.main.async {
            print("KiKi \(statistics.startDate)  \(sum)" )
                //completion(Int(steps))
                if (Calendar.current.isDateInToday(statistics.startDate)){
                    todaySteps = Int(steps)
                }
                else if (Calendar.current.isDateInYesterday(statistics.startDate)){
                    sevenDaysTotal = sevenDaysTotal + Int(steps)
                    yesterdaySteps = Int(steps)

                }
                else{
                    sevenDaysTotal = sevenDaysTotal + Int(steps)
                }

        }
        

    }
        
    DispatchQueue.main.async {            
        completion(todaySteps, yesterdaySteps, sevenDaysTotal/7)
    }
        
}

healthStore.execute(query)
}