Я пытаюсь преобразовать данные из шагов в 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")
Мне бы хотелось, чтобы круговой индикатор выполнения отображал количество шагов.