使用Kingfisher将URL加载到数组中

时间:2019-06-10 13:41:58

标签: ios swift kingfisher

我有一个按钮,可以在其中将图像上传到我的应用程序。一旦我上传它们,它们就会存储到包含URL的数组中。 现在,我尝试从URL检索图像并将其插入到imageview中,然后将其插入UIImage数组中。但是它总是返回NIL。

首先,我遇到了错误,因为它是一个数组:

  

无法将类型“ [String]”的值转换为预期的参数类型“ String”

    if downloadURL != []
    {
        let url = URL(string: downloadURL) //ERROR HERE

        imageView.kf.setImage(with: url)
        imgArray.append(imageView.image!)

    }

因此由于imageView返回NIL,因此它在“ imgArray.append”处崩溃。

downloadURL没有URL,因此它不是nil。

2 个答案:

答案 0 :(得分:1)

由于要下载所有图像,因此必须执行以下操作:

for url in downloadURL {
    guard let imageURL = URL(string: url) else {
        continue 
    }
    imageView.kf.setImage(with: imageURL)
    // to load images separately use this
    KingfisherManager.shared.retrieveImage(with: imageURL) { result in
         let image = try? result.get().image
         if let image = image {
              imgArray.append(image)
         }
     }
}

答案 1 :(得分:0)

您正在尝试使用URL初始化arrayURL需要使用String初始化。 (错误清楚地告诉您)

此外,kf.setImage(with:)需要初始化URL,而不是String,所以:

尝试这样的事情:

if downloadURL.count > 0 {
        if let urlString = downloadURL.last { // I intuit that the url you want is the last one you appended 

        let url = URL(string: urlString)
        imageView.kf.setImage(with: url)

        if let image = imageView.image {
          imgArray.append(image) // Only append if the image was set conrrectly
        }
    }
}