我需要将字符串转换为图像,但出现此错误:
“错误无法将字符串类型的值转换为预期的参数类型“数据””
let url = URL(string: "http://******************")!
let request = URLRequest(url: url)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print("solicitud fallida \(error)")
return
}
do {
print("recibimos respuesta")
if let json = try JSONSerialization.jsonObject(with: data) as? [String: String] {
DispatchQueue.main.async {
let nombre = json["nombre"]
self.urllabel.text = nombre
let backimg = json["fondo"]
self.imgfondo.image = UIImage(data: backimg)
}
最佳答案
您应该将 json 序列化为 ["string":Any] 并稍后将值转换为 String 和 Data。如果您确定“fondo”在您的后端属于数据类型,那么这应该可以工作
像这样:
if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any?] {
DispatchQueue.main.async {
if let nombre = json["nombre"] as? String{
self.urllabel.text = nombre
}
if let backimg = json["condo"] as? Data{ //Is this of type Data in you backend? //Data is the same as NSData prior to Swift 3
self.imgfondo.image = UIImage(data: backimg)
}
}
您的解决方案不起作用的原因是您尝试从字符串制作图像,而您应该传入 NSData 类型。
关于Swift 3 上的 JSON 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005568/