Двоичный оператор '*' нельзя применить к операндам типа '(@escaping (Double) -> Void) -> ()' и 'Double'?

-3

Я задал быстрый вопрос здесь и получил этот ответ здесь из которых избавились от ошибки, но теперь я получаю новую.

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

Спасибо!

  • 0
    Self.readWeight - это функция, которая ничего не возвращает. Что вы ожидаете от этого?
  • 0
    Кажется, он возвращает значения, но я попытаюсь установить оператор print, чтобы установить его @Fogmeister
Показать ещё 3 комментария
Теги:
swift3

1 ответ

1
Лучший ответ

Функция readWeight ничего не возвращает, она использует замыкание как асинхронный обратный вызов.

Соответствующий синтаксис

readWeight() { weight in
    let result = weight * 0.67
}
  • 0
    Спасибо ... Кажется, работает минус тот факт, что я сейчас получаю /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 во всем результате () в функции. Извините, я действительно новичок в стремительности и действительно хорошо разбиваю вещи.
  • 0
    Решение зависит от контекста, в котором вызывается метод.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню