【发布时间】:2022-08-11 23:11:14
【问题描述】:
我试图重定向这个在结构中解码的 API 调用的输出,但是当我尝试使用数据创建一个对话框时,它给了我这个奇怪的异常。如您所见,API 返回数据,但只有在我创建对话框时才会看到此异常。你能帮助我吗?
代码:
struct rspServerInfo: Codable{
let ok: Bool
let info: String
}
@IBAction func backendDetails(_ sender: Any) {
guard let url = URL(string: \"http://\\(hostname):\\(port)/STOInfo/ServerInfo\")else{
return
}
var request = URLRequest(url: url)
request.httpMethod = \"POST\"
request.setValue(\"application/json\", forHTTPHeaderField: \"Content-Type\")
let body: [String: AnyHashable] = [
\"username\": username,
\"password\": password,
]
request.httpBody = try? JSONSerialization.data(withJSONObject: body, options: .fragmentsAllowed)
let task = URLSession.shared.dataTask(with: request) {data, _, error in
guard let data=data, error == nil else{
return
}
do{
let response = try JSONDecoder().decode(rspServerInfo.self, from: data)
print(\"SUCCESS: \\(response)\")
let dialogMessage = UIAlertController(title: \"Backend details\", message: response.info, preferredStyle: .alert)
let ok = UIAlertAction(title: \"OK\", style: .default, handler: { (action) -> Void in
print(\"Ok button tapped\")
})
dialogMessage.addAction(ok)
self.present(dialogMessage, animated: true, completion: nil)
}
catch{
print(error)
let dialogMessage = UIAlertController(title: \"Backend details\", message: \"Error retreiving.\", preferredStyle: .alert)
let ok = UIAlertAction(title: \"OK\", style: .default, handler: { (action) -> Void in
print(\"Ok button tapped\")
})
dialogMessage.addAction(ok)
self.present(dialogMessage, animated: true, completion: nil)
}
}
task.resume()
}
标签: ios swift storyboard