2017-06-22 11 views
-2

私は迅速な質問hereを受け取り、この回答を受け取ったhereのうち、エラーを取り除いたが、今は新しいものを受け取っている。タイプ '(@エスケープ(ダブル) - >ボイド) - >()'および 'ダブル'のオペランドには、バイナリ演算子 '*'を適用できませんか?

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は何も返さない関数です。あなたはこれが何をすると思いますか? – Fogmeister

+0

値を返すようですが、設定するためにprintステートメントを試してみます@Fogmeister – arodebaugh

+0

@Fogmeisterうん、別のエラーが返ってきているようではありません。 '/Users/andrewrodebaugh/Desktop/Aqua/Aqua/ViewController.swift :67:13: 'ガード'ボディが倒れない、スコープを終了するために 'return'または 'throw'を使用することを検討する ' – arodebaugh

答えて

1

関数readWeightは何も返しません。クロージャを非同期コールバックとして使用します。

適切な構文は

readWeight() { weight in 
    let result = weight * 0.67 
} 
+0

ありがとうございます...私が現在 '/Users/xxx/Desktop/xxx/xxx/ViewController.swift:77:13を取得しているという事実をマイナスしているように見えます: 'ガード'ボディが倒れないかもしれません。 'または' throw 'を実行して、関数内のすべてのresult()内のスコープを終了します。申し訳ありませんが、私は本当に速く、本当に良いことを壊すことに新しいです。 – arodebaugh

+0

解決方法は、メソッドが呼び出されたコンテキストに依存します。 – vadian

+0

なぜそれはエラーであり、警告ではないのですか? – arodebaugh

関連する問題