2017-06-22 88 views
-2

我问了一个很快的问题here,并收到了这个答案here其中摆脱了错误,但现在我收到一个新的。二元运算符'*'不能应用于类型'(@escaping(Double) - > Void) - >()'和'Double'的操作数?

Binary operator '*' cannot be applied to operands of type '(@escaping (Double) -> Void) ->()' and 'Double' 

代码现在看起来像:

self.readWeight * 0.67 

感谢:

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) 
} 

,每当我试图乘它像我得到这个错误!

+0

Self.readWeight是不返回任何内容的功能。你期望这个做什么? – Fogmeister

+0

它似乎是返回值,但我会尝试一个打印语句来设置它@Fogmeister – arodebaugh

+0

@Fogmeister是的,它似乎并没有返回任何只是得到另一个错误'/Users/andrewrodebaugh/Desktop/Aqua/Aqua/ViewController.swift :67:13:'警卫'身体可能不会跌倒,考虑使用'返回'或'抛出'退出范围' – arodebaugh

回答

1

函数readWeight不返回任何内容,它使用闭包作为异步回调。

适当的语法是

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

谢谢...似乎工作减去事实我现在正在'/Users/xxx/Desktop/xxx/xxx/ViewController.swift:77:13:'警卫'身体可能不会通过,考虑使用'返回'或'throw'退出函数中的所有结果()中的范围。对不起,我真的很新,很擅长打破事情。 – arodebaugh

+0

解决方案取决于调用方法的上下文。 – vadian

+0

嗯,为什么这是一个错误,而不是一个警告 – arodebaugh

相关问题