传递一组URL的问题

时间:2017-09-26 11:09:48

标签: ios swift

我正在解析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

2 个答案:

答案 0 :(得分:0)

flatMap返回其类型的数组。在这种情况下,它返回[String]。代码中的myImgUrl是一个常量,其中包含String,而不是[String]。您必须从String中获取特定 imageURL并将其分配给myImgUrl。话虽如此,使用您粘贴的代码会失败,因为myImgUrllet常量,其值不能按定义重新分配。如果来自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对使用模型有很大帮助。