gpt4 book ai didi

swift - 如何使用 Alamofire 快速加载图像

转载 作者:IT王子 更新时间:2023-10-29 05:05:05 26 4
gpt4 key购买 nike

我有一个 Collection View Controller ,它通过 URL 异步加载图像。(类似 Instagram 的东西)我正在寻找实现加载图像部分的最佳方法。请告诉我你的想法

第一种方式——没有任何外部库:

   let downloadQueue = dispatch_queue_create("com.pro.asyncImages",nil)
dispatch_async(downloadQueue){

var data = NSData(contentsOfURL: NSURL(string: pictureUrl!)!)

var image: UIImage?
if (data != nil){
image = UIImage(data: data!)
}
dispatch_async(dispatch_get_main_queue()){
uiImageView.image = image
}
}

第二种方式——使用Alamofire(请求属于Alamofire)

if let  mediaUrl = info.mediaUrl {
request(.GET,mediaUrl).response(){
(_, _, data, _) in
let image = UIImage(data: data! as NSData)
imageView.image = image
}
}

最后,我读到 AFNetworking 在将 url 异步加载到 urlImage 方面做得很好,这就是我想要做的。

那么 AFNetworking 是否更适合这项任务? (然后是 Alamofire)如果没有,我不明白如何将 AFNetworking 添加到我的 swift 项目中,除了添加 #import “AFNetworking.h” 我还需要添加哪些文件?

请说明哪种方法最好,我的需求是性能,控诉,缓存。 View 集合 Controller 就像 Instegram 一样,在向下滚动的同时加载图像。我希望我足够清楚我需要什么, 谢谢

最佳答案

正如作者在 Alamofire 中提到的 README.md :

When should I use AFNetworking?

  • UIKit extensions, such as asynchronously loading images to UIImageView

所以回答你的问题:

So is AFNetworking is better for this task?

是的!

但是如果仍然想使用 vanilla Alamofire 项目,你可以这样获取图像:

   Alamofire.request(.GET, "https://robohash.org/123.png").response { (request, response, data, error) in
self.myImageView.image = UIImage(data: data, scale:1)
}

附言

但如果您只想加载图像(当然是异步的)——您根本不需要使用 AlamofireAFNetworking。只需在您的代码中添加这个小扩展:

extension UIImageView {
public func imageFromUrl(urlString: String) {
if let url = NSURL(string: urlString) {
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
self.image = UIImage(data: data)
}
}
}
}

并使用它:

myImageView.imageFromUrl("https://robohash.org/123.png")

关于swift - 如何使用 Alamofire 快速加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28636622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com