Я задал быстрый вопрос здесь и получил этот ответ здесь из которых избавились от ошибки, но теперь я получаю новую.
Binary operator '*' cannot be applied to operands of type '(@escaping (Double) -> Void) -> ()' and 'Double'
Код теперь выглядит так:
func readWeight(result: @escaping (Double) -> Void) {
let quantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bodyMass)
let weightQuery = HKSampleQuery(sampleType: quantityType!, predicate: nil, limit: 1, sortDescriptors: nil) {
query, results, error in
if (error != nil) {
print(error!)
result(0.0)
}
guard let results = results else {
print("No results of query")
result(0.0)
}
if (results.count == 0) {
print("Zero samples")
result(0.0)
}
guard let bodymass = results[0] as? HKQuantitySample else {
print("Type problem with weight")
result(0.0)
}
result(bodymass.quantity.doubleValue(for: HKUnit.pound()))
}
healthKitStore.execute(weightQuery)
}
и я получаю эту ошибку всякий раз, когда я пытаюсь ее умножить следующим образом:
self.readWeight * 0.67
Спасибо!
Функция readWeight
ничего не возвращает, она использует замыкание как асинхронный обратный вызов.
Соответствующий синтаксис
readWeight() { weight in
let result = weight * 0.67
}
/Users/xxx/Desktop/xxx/xxx/ViewController.swift:77:13: 'guard' body may not fall through, consider using a 'return' or 'throw' to exit the scope
во всем результате () в функции. Извините, я действительно новичок в стремительности и действительно хорошо разбиваю вещи.