因此,我试图在应用程序本身的标签中打印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
}