我如何从if let数据字符串语句中设置serverResponse变量

问题描述 投票:0回答:3
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函数将打印出服务器响应。

swift var
3个回答
2
投票

DataTask是异步的。您的函数正在返回服务器请求完成之前的值。您应该在此处使用完成处理程序。


0
投票

服务器中的值可能不是字符串类型。我建议为其使用SwiftyJSON(https://github.com/SwiftyJSON/SwiftyJSON)库。


0
投票

您需要添加completionHandler


-1
投票

您必须使用JSONEndoding对数据进行编码和解码,然后尝试设置serverResponse。

© www.soinside.com 2019 - 2024. All rights reserved.