我如何知道 swift 5 中的图像是否实际上是从 url 下载的?
How do I know in swift 5 if the image was actually downloaded from an url?
我正在使用带有滚动视图的页面控件,并希望将下载的图像添加到滚动视图,直到提供的 link 不再下载图像。现在,link 下载图像直到索引不大于 7,但循环仍在继续。显然它不会 return 错误,当 url 尽管没有图像可下载时仍然可以加载。这是我在索引大于 7 的浏览器中手动粘贴 url 时得到的结果。
这是我使用的代码。我想知道是否有一种方法可以测试是否实际下载了图片。
var test = 15
func setupScreens() {
for index in 1..<test {
// 1.
frame.origin.x = scrollView.frame.size.width * CGFloat(index - 1)
frame.size = scrollView.frame.size
// 2.
let imageView = UIImageView(frame: frame)
let urlSession = URLSession(configuration: .default)
let url = URL(string: "https://jarisstoriesphotographyphoto.files.wordpress.com/2020/06/menu\(index).png")!
// Create Data Task
let dataTask = urlSession.dataTask(with: url) { [weak self] (data, _, error) in
if let error = error {
print(error)
self?.test = 0 // should end the loop
}
if let data = data {
DispatchQueue.main.async {
// Create Image and Update Image View
imageView.image = UIImage(data: data)
self?.scrollView.addSubview(imageView)
}
}
}
// Start Data Task
dataTask.resume()
}
在代码中设置图像之前,您可以像这样简单地检查一下:
DispatchQueue.main.async {
if let image = UIImage(data: data) { //Image is available in the url
imageView.image = image
self?.scrollView.addSubview(imageView)
}else {
print("Image not available in this url")
}
}
继续编码.......... :)
我正在使用带有滚动视图的页面控件,并希望将下载的图像添加到滚动视图,直到提供的 link 不再下载图像。现在,link 下载图像直到索引不大于 7,但循环仍在继续。显然它不会 return 错误,当 url 尽管没有图像可下载时仍然可以加载。这是我在索引大于 7 的浏览器中手动粘贴 url 时得到的结果。
这是我使用的代码。我想知道是否有一种方法可以测试是否实际下载了图片。
var test = 15
func setupScreens() {
for index in 1..<test {
// 1.
frame.origin.x = scrollView.frame.size.width * CGFloat(index - 1)
frame.size = scrollView.frame.size
// 2.
let imageView = UIImageView(frame: frame)
let urlSession = URLSession(configuration: .default)
let url = URL(string: "https://jarisstoriesphotographyphoto.files.wordpress.com/2020/06/menu\(index).png")!
// Create Data Task
let dataTask = urlSession.dataTask(with: url) { [weak self] (data, _, error) in
if let error = error {
print(error)
self?.test = 0 // should end the loop
}
if let data = data {
DispatchQueue.main.async {
// Create Image and Update Image View
imageView.image = UIImage(data: data)
self?.scrollView.addSubview(imageView)
}
}
}
// Start Data Task
dataTask.resume()
}
在代码中设置图像之前,您可以像这样简单地检查一下:
DispatchQueue.main.async {
if let image = UIImage(data: data) { //Image is available in the url
imageView.image = image
self?.scrollView.addSubview(imageView)
}else {
print("Image not available in this url")
}
}
继续编码.......... :)