iOS NSURLSession 下载
周五的时候,有个新的需求,要下载脚本,帮助玩家自动打怪,应该也是挂机的意思吧!
组长让我设计界面,让汤老师设计数据等。我觉得数据的挑战性更大一点,然后就接过来了。
自己还没有形成互联网思维,所以弄了一天,真的是感觉头大。很多事情想不明白,脑袋懵里懵懂的,应该是锻炼的少。
经过很多次,我觉得自己的处事方法不对,遇到很多难题,都是绕道走,或者是直接问同事,这样的现象不好;但是当自己去克服的时候,搜几篇博文,看上几遍,如果一开始,大概10分钟内没有解决我的问题,我就没有耐心继续看下去了,而且脑袋里也是蒙蒙的。
这个现象不好,只能自己多做项目,多解决问题,遇见的多了,找到大概的解决思路,应该就好多了。
言归正传,这个新的需求,就两点:1.下载脚本,下载完成后,将脚本放置到一个固定的位置;2.下载完成后,将结果传递给界面。
相对简单一点,不需要去设置进度条,也不需要去暂时和断续下载,不过折腾的我头也很大。现在开始理一理。
现在想想,自己写的代码是不是太简单了。先这样吧,明天如果感觉不行,再改吧
1.单建了一个工具类,专门用做下载
1.1 头文件
#import <Foundation/Foundation.h> typedef void(^success)(NSString *str); @interface DownloadTool : NSObject + (void)downloadWithURLStr:(NSString *)urlStr andSuccessBlock:(success)success; @end
1.2 .m文件
+ (void)downloadWithURLStr:(NSString *)urlStr andSuccessBlock:(success)success{
[[[NSURLSession sharedSession]downloadTaskWithURL:[NSURL URLWithString:urlStr] completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
if (!error) {
NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *)response;
if (httpResponse.statusCode == 200) {
NSString * urlStr = response.URL.lastPathComponent;
NSLog(@"urlStr = %@\n",urlStr);
if (urlStr == nil)return ;
NSString * destinationPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",urlStr]];
[[NSFileManager defaultManager]moveItemAtPath:location.path toPath:destinationPath error:nil];
NSLog(@"\ndestinationPath = %@\n sourcePath = %@ \n response = %@\n",destinationPath,location.path,response);
if (success) {
success(destinationPath.lastPathComponent);
}
}
}else{
NSLog(@"\nerror = %@\n",error);
}
}] resume];
2.调用下载方法
NSString* str = @"http://pic1a.nipic.com/2008-09-05/200895134351570_2.jpg";
[DownloadTool downloadWithURLStr:str andSuccessBlock:^(NSString *str) {
NSLog(@"------%@",str);
}];
这样就完事了。在具体路径下,就能看到被移过去的文件了。
iOS NSURLSession 下载的更多相关文章
- IOS 网络浅析-(十 NSURLSession下载简介)
之前本来打算在写两个篇幅,但是在这片开写的时候觉得还是写一个比较好,有利于理解.NSURLSession下载是通过NSURLSession下载代理实现的,上一片也介绍了代理,之所以没有介绍下载是因为, ...
- 如何为ios酷我音乐盒下载导出的音乐文件(使用Java程序设计)
这个工具已经准备第二版,读者了解编程软件,可以直接使用,请阅读和使用这个场地 http://blog.csdn.net/jzj1993/article/details/44459983 本文所涉及内容 ...
- iOS NSURLSession 封装下载类
周六日鼓捣NSURLSession,效率虽然低下,最后还是有了一点点眉目.昨天和汤老师一起测试,又对它加深了一点理解.趁热打铁,先总结一下. 封装的类,对外用的方法,我写的是类方法,所以,在类方法中, ...
- IOS - NSURLSession
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...
- iOS - NSURLSession 网络请求
前言 NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0) @interface NSURLSession : NSObject @available(iOS ...
- 利用NSURLSession下载视频,图片,能实现断点续传
首先分析下载资源到本地,就得有URL ,点击btn ,就会解析网络地址,获取数据,就得有进度条控件 NSURLSession类的实现,通过委托代理模式去实现一些方法,需遵守<NSURLSessi ...
- ios 后台下载,断点续传总结
2018年12月05日 16:09:00 weixin_34101784 阅读数:5 https://blog.csdn.net/weixin_34101784/article/details/875 ...
- ios NSURLSession后台传输
http://www.appcoda.com/background-transfer-service-ios7/ http://www.raywenderlich.com/51127/nsurlses ...
随机推荐
- wp 处理方法
-DeepZoom:源于遥感影像的金字塔显示方式,提供了与高分辨率图像进行交互的能力,可以快速缩放图像而不影响应用的性能,加载或平移图像时可以光滑过度 -应用:高分辨率.极大图像的浏览,3D合成图像, ...
- python 中chr(),unichr(),ord()的用法
chr()根据整数返回对应的字符,也就是讲ascii转换为字符 unichr()将整数返回成unicode字符 ord()将字符转换成ascii码
- COJ0700 数学(一)
试题描述 现在有一大堆数,请你对这些数进行检验. 输入 第一行:CAS,代表数据组数(不大于500000),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字检验是 ...
- Mybatis_mybatis常用jdbcType数据类型
MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED ...
- Spring动态配置多数据源
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...
- DataGridView控件添加数据时空白的可 错误情况
写一个小程序,将数据库中的两张表相关信息显示在DataGridView中.代码如下: //获取项目数据,添加到表中 SqlConnection con = new SqlConnection(Main ...
- hdu 最大报销额
本题也是一个背包的问题,我觉得这道题的核心就是根据精确度将浮点型转化为整型然后利用动态规划进行求解,注意对题意的理解,有3种支票是不能够报销的. 我开始照着这个思路进行思考,但是敲出来的第一个代码居然 ...
- Struts2 实战(一)
环境: Ubuntu 14.04 LTS 64位 开发工具的准备 我选择 Eclipse, 而没有选择MyEclipse, 一是因为免费,不想去弄破解,二是不想太傻瓜化的东西(注:本人并没有用过MyE ...
- IOS第四天(4:下一题和选框的实现)
#import "HMViewController.h" #import "HMQuestion.h" #define kButtonWidth 35 #def ...
- Mesa10.2在Win7上的编译
Mesa10仍然支持Windwos/linux,但是编译方式已经不提供makefile或者workspace Building on windows requires several open-sou ...