Попытка преобразовать шаги в данных HealthKit в круг выполнения CABasicAnimation - PullRequest
1 голос
/ 10 апреля 2019

Я пытаюсь преобразовать данные из шагов в HealthKit в круговую анимацию, но получаю эту ошибку:

Двоичный оператор '<=' нельзя применить к операндам типа UILabel иDouble </p>

Я пробовал приведение типов, но говорит, что не могу выполнить преобразование.

В этой части выдается ошибка

if self.totalSteps <= 100.0 {
    cP.setProgressWithAnimation(duration: 1.0, value: 0.1)
        if self.totalSteps >= 100.0 {
            cP.setProgressWithAnimation(duration: 1.0, value: 0.2)
        }
    }

Вот как я вытягиваюколичество шагов

    func getTodaysSteps(completion: @escaping (Double) -> Double) {

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

        let now = Date()
        let startOfDay = Calendar.current.startOfDay(for: now)
        let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: now, options: .strictStartDate)
        let query = HKStatisticsQuery(quantityType: stepsQuantityType, quantitySamplePredicate: predicate, options: .cumulativeSum) { (_, result, error) in
        var resultCount = 0.0
            guard let result = result else {
                print("Failed to fetch steps rate")
                completion(resultCount)
                return
            }
            if let sum = result.sumQuantity() {
                resultCount = (sum.doubleValue(for: HKUnit.count()))
            }

            DispatchQueue.main.async {
                completion(resultCount)
            }

        }
        healthStore.execute(query)


    }



@IBOutlet weak var theGif: UIImageView!



@IBOutlet weak var totalSteps: UILabel!


    @IBAction func getTotalSteps(_ sender: Any) {
        getTodaysSteps { (result) in
            print("\(result)")
            DispatchQueue.main.async {
                self.totalSteps.text = "\(result)"

Вот как я делаю анимацию

func setProgressWithAnimation(duration: TimeInterval, value: Float) {
    let animation = CABasicAnimation(keyPath: "strokeEnd")
    animation.duration = duration
    animation.fromValue = 0
    animation.toValue = value
    animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
    progressLayer.strokeEnd = CGFloat(value)
    progressLayer.add(animation, forKey: "animateprogress")

Мне бы хотелось, чтобы круговой индикатор выполнения отображал количество шагов.

...