因此,我试图在应用程序本身的标签中打印JSON响应(或textField,并不重要)。我可以毫无问题地打印到控制台,但是我不能将JSON响应设置为我的标签文本。这是我的代码。

URLSession.shared.dataTask(with: request) { (data, response, error) in
       // print("Data, response, error", data, response, error)
        if let data = data {
            let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: String] ?? [:]
            print("json", json)
            let token = json?["token"] as? String ?? ""
            UserDefaults.standard.set(token, forKey: "token")
            UserDefaults.standard.set(true, forKey: "signedIn")
        }
        //print("Data, response, error", data, response, error)
    }.resume()

如果我尝试做label.text = ("json", json)我得到错误提示

无法设置类型[String:String]?作为字符串

我该怎么办?谢谢!

最佳答案

由于指示cannot set type [String: String]? as String的错误意味着您无法将[String: String]?设置为UILabel,因为label.text仅接受String值。

要解决此问题,您需要从String字典中获取json值。就像是:

let yourString = json["keyYouWantToAccess"]

然后将其分配给您的label文本,例如:
label.text = yourSting

而且,当您使用如下所示的API调用时,请不要忘记在主线程中更新UI:
DispatchQueue.main.async {

    //Update your UI here
    self.label.text = yourSting
}

10-07 19:14
查看更多