打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IOS分别利用NSURLSession和AFNetworking实现下载文件

IOS分别利用NSURLSession和AFNetworking实现下载文件,有需要的朋友可以参考下。




利用NSURLSession 创建下载任务
需要注意的是更新UI必须要到主线程中调用,下载后得到的URL是临时创建,随着block销毁而删除.

利用改变NSURLSessionConfiguration 后的方法可以实现程序进入后台继续下载任务




NSURLRequest *request = [NSURLRequest requestWithURL:_imageUrl];    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];       NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];     NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request                                                    completionHandler:                              ^(NSURL *location, NSURLResponse *response, NSError *error) {                                      UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:location]];                                      dispatch_async(dispatch_get_main_queue(), ^{                                          self.imageView.image = image;                                      });                                             }];    [task resume];




利用AFN和NSURLSession协作创建下载任务
利用AFN框架下载文件可以指定永久存储路径——通过修改destination的block返回的url地址。而且完成的block默认是在主线程执行。

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];       AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:configuration];       NSURLRequest *request = [NSURLRequest requestWithURL:_imageUrl];       NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath,NSURLResponse *response) {               NSURL *downloadURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];        return [downloadURL URLByAppendingPathComponent:[response suggestedFilename]];           } completionHandler:^(NSURLResponse *response,NSURL *filePath, NSError *error) {        //此处已经在主线程了        UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:filePath]];            self.imageView.image = image;    }];       [downloadTask resume];        
不管用哪种方法最后一定要执行 task 的 resume方法 因为默认下载操作是挂起的,必须先手动恢复下载。





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
iOS 7系列译文:忘记NSURLConnection,拥抱NSURLSession吧!
iOS NSURLSession Example
网络(4.1)—AFNetworking多任务异步请求
[转]AFNetWorking使用笔记
AFNetWorking是如何进行数据缓存的--之AFImageCache & NSURLC...
AFNetworking 文件上传Data,File图片,文件等上传(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服