1
我写了这个代码(在功能我现在用的是SwiftSky API)使用函数的返回值 - 斯威夫特
// Asked question about WEATHER
public func weatherQuestion(question: String, userLatitude: Double, userLongitude: Double) -> String {
var answer = String()
// Setting up SwiftSky
SwiftSky.secret ="...."
SwiftSky.language = .italian
SwiftSky.locale = .current
SwiftSky.units.temperature = .celsius
SwiftSky.units.accumulation = .centimeter
SwiftSky.units.distance = .kilometer
SwiftSky.units.precipitation = .millimeter
SwiftSky.units.pressure = .millibar
SwiftSky.units.speed = .kilometerPerHour
if question.contains("meteo") {
SwiftSky.get([.current, .alerts, .days, .hours, .minutes], at: Location(latitude: userLatitude, longitude: userLongitude) , on: Date() , { (result) in
switch result {
case .success(let forecast):
answer = (forecast.current?.summary)!
case .failure(let error):
print(error)
}
})
}
return answer
}
的问题是,当我尝试使用函数的结果通过打印其值(使用下面的代码)
print(weatherQuestion(question: text, userLatitude: Double(self.locationCoordinates.latitude), userLongitude: Double(self.locationCoordinates.longitude)))
它不打印任何东西。我如何使用函数的结果,以便在打印出来的值不是空的时候?
'SwiftSky'以异步方式工作。您不能从异步任务的某个函数中返回某些内容。你必须添加一个完成处理程序。 – vadian
我该怎么办? @vadian(对不起,但我是编程新手) – edoriggio
请看(例如,有很多很多类似的答案)https://stackoverflow.com/questions/39643334/how-do-you-write-a-completion-处理器在swift 3/39643395#39643395 – vadian