func getResponse(serverName: String) -> String {
var serverResponse: String = "No Response"
let serverURL = "http://" + serverName + ":3000"
if let url = URL(string: serverURL) {
URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data {
if let jsonString = String(data: data, encoding: .utf8) {
serverResponse = jsonString
print(jsonString)
}
}
}.resume()
}
return serverResponse
}
[我正在尝试从if let jsonString内部设置serverResponse var,但它总是返回“ No response”(默认为vars),而如果if let jsonString内部的print函数将打印出服务器响应。
DataTask是异步的。您的函数正在返回服务器请求完成之前的值。您应该在此处使用完成处理程序。
服务器中的值可能不是字符串类型。我建议为其使用SwiftyJSON(https://github.com/SwiftyJSON/SwiftyJSON)库。
您需要添加completionHandler
。
您必须使用JSONEndoding对数据进行编码和解码,然后尝试设置serverResponse。