【发布时间】:2021-06-12 04:15:16
【问题描述】:
如何从函数中返回双精度变量?
class Api {
func getCoordinates(latitude: Bool) -> Double {
if (latitude) {
let url = URL(string: "https://waterservices.usgs.gov/nwis/iv/?format=json&indent=on&sites=08155200¶meterCd=00065&siteStatus=all")!
URLSession.shared.dataTask(with: url) { data, _, _ in
if let data = data {
let posts = try! JSONDecoder().decode(Post.self, from: data)
let lat = (posts.value?.timeSeries?.first?.sourceInfo?.geoLocation?.geogLocation?.latitude)
return lat
}
}
print(5)
// return 5
} else {
print(3)
return 3
}
}
}
使用此代码返回:
Unexpected non-void return value in void function
我总是可以删除return lat,但这会破坏目的。
【问题讨论】:
-
查看他们使用
URLSession的其他主题。 -
你不能从一个异步获取其值的函数中返回任何东西(除非你想采用美妙的新
asyncawait)。为此,您需要让时间倒流。