我收到此错误:即使Swift被设置为Double,Swift也会给出无效的返回错误?
/Users/xxxx/Desktop/xxx/xxx/ViewController.swift:43:38: Unexpected non-void return value in void function
和其他类似这样即使我的功能设置为双倍返还。
这是每个返回中出现此错误的函数之一。
func readWeight() -> Double {
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!)
return 0.0
}
guard let results = results else {
print("No results of query")
return 0.0
}
if (results.count == 0) {
print("Zero samples")
return 0.0
}
guard let bodymass = results[0] as? HKQuantitySample else {
print("Type problem with weight")
return 0.0
}
return bodymass.quantity.doubleValue(for: HKUnit.pound())
}
healthKitStore.execute(weightQuery)
}
的是如何用一个实例:
print(readWeight())
谢谢!
你试图在你传递给'HKSampleQuery'块返回的东西,那是行不通的,块呢没有返回类型。你必须为你的readWeight方法使用完成块,或者以某种方式等待完成'HKSampleQuery'。 – luk2302
是'HKSampleQuery'函数是同步的吗?如果是这样,你需要使用块和完成处理程序 –
@FangmingNing刚学会它是异步的,所以我不得不等待值...这个https://stackoverflow.com/a/44701636/4285493似乎工作,但比较它似乎并没有工作 – WebMaster