使用 Kingfisher 将 URL 加载到数组中
Load URL into array using Kingfisher
我有一个按钮可以将图像上传到我的应用程序。一旦我上传它们,它们就会存储到一个包含 URLs 的数组中。
现在我正在尝试从 URL 中检索图像并将其插入到图像视图中,然后立即将其插入到 UIImage 数组中。但它总是 returns NIL。
首先,我遇到了错误,因为它是一个数组:
Cannot convert value of type '[String]' to expected argument type 'String'
if downloadURL != []
{
let url = URL(string: downloadURL) //ERROR HERE
imageView.kf.setImage(with: url)
imgArray.append(imageView.image!)
}
因此它在 "imgArray.append" 处崩溃,因为 imageView returns NIL。
下载URL 确实有一个 URL 所以它不是零。
您正在尝试用 array
初始化 URL
,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
}
}
}
既然你想下载所有图片,你必须这样做:
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)
}
}
}
我有一个按钮可以将图像上传到我的应用程序。一旦我上传它们,它们就会存储到一个包含 URLs 的数组中。 现在我正在尝试从 URL 中检索图像并将其插入到图像视图中,然后立即将其插入到 UIImage 数组中。但它总是 returns NIL。
首先,我遇到了错误,因为它是一个数组:
Cannot convert value of type '[String]' to expected argument type 'String'
if downloadURL != []
{
let url = URL(string: downloadURL) //ERROR HERE
imageView.kf.setImage(with: url)
imgArray.append(imageView.image!)
}
因此它在 "imgArray.append" 处崩溃,因为 imageView returns NIL。
下载URL 确实有一个 URL 所以它不是零。
您正在尝试用 array
初始化 URL
,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
}
}
}
既然你想下载所有图片,你必须这样做:
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)
}
}
}