我正在解析actualEvent
响应以获取大约10个网址的图片。我在第2个代码段中按照下面的json
获取了这些内容。现在,当我必须通过指定URL来向集合视图显示图像时,我就这样做了......
imageURL
// -------在这里获取let myImgUrl = "http://myapp…..”
let url = URL(string: imageurl)
let data = try? Data(contentsOf: url!)
self.sampleImageView.image = UIImage(data: data!)
self.arrayOfURLImages.append(self.sampleImageView.image!)
---------
imageURL
现在我必须将if let projectData = jsonDict["Productdata"] as? [[String: Any]] {
let productIds = projectData.flatMap({ $0["product_id"] as? String })
let images = projectData.flatMap({ $0["product_images"] as? [[String: Any]] }).flatMap({ $0 })
let imageURL = images.flatMap({ $0["image_url"] as? String })
}
分配给imageURL
。如果我直接传递imageURL,它会给出错误.. myImgUrl
。我该如何解决这个问题??
此外,这是'Cannot convert value of type '[String]' to expected argument type 'String''
回复..
json
答案 0 :(得分:0)
flatMap
返回其类型的数组。在这种情况下,它返回[String]
。代码中的myImgUrl
是一个常量,其中包含String
,而不是[String]
。您必须从String
中获取特定 imageURL
并将其分配给myImgUrl
。话虽如此,使用您粘贴的代码会失败,因为myImgUrl
是let
常量,其值不能按定义重新分配。如果来自imageURL
的字符串是myImgUrl
将拥有的第一个值,则一切正常,但如果您首先使用其他内容初始化myImgUrl
,则必须使用{ {1}}代替var
答案 1 :(得分:0)
用于设置图像
if let projectData = jsonDict["Productdata"] as? [[String: Any]] {
// Rest of the "getting the data"
let images = projectData["product_images"] as? NSArray
let imageURLs = images.flatMap({ $0["image_url"] as? String }) // You will need an instance var here.
}
获取网址
url = imageURLs[indexPath.row]
我建议您使用Models来使您的代码更具可读性和无错误。 :)
This website对使用模型有很大帮助。