我有一个按钮,可以在其中将图像上传到我的应用程序。一旦我上传它们,它们就会存储到包含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。
答案 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
初始化array
,URL
需要使用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
}
}
}