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 ...
随机推荐
- Xcode 编辑时的爆炸效果
Xcode 的爆炸效果 1.打开终端输入 $mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins;$curl ...
- JavaScript基础知识总结
正则表达式: 是一种专门用于操作字符串规则. 正则表达式: 通过一些符号来表达,简化对字符串的复杂操作. 弊端:阅读性较差 常见操作: 1.匹配 String matches(regex) 2.获取( ...
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算(终结版)
首先,说下概念(网上很多帖子几个地方都搞混了,理一下): dip : device independent pixels ,设备无关像素. 我看很多帖子写的五花八门的,关于d的,什么display ...
- JS倒计时代码
第一种:精确到秒的javascript倒计时代码 HTML代码: <form name="form1"> <div align="center" ...
- hdu-acm stepsHumble Numbers
这是我做的第六道动态规划水题,对动态规划差不多有了一个大致的概念.动态规划有几个关键因素,第一是最优子结构,第二是状态和状态转移方程.整个过程都是以 最优 为中心的.因此在状态转移方程中常涉及到几 ...
- 涉及 C#的 foreach问题
当时是用foreach实现遍历,但是函数传入参数是Object类型的,由于Objectl类型没有实现相关接口,所以foreach并不能执行. 那么下面我们来看看,想要使用foreach需要具备什么条件 ...
- 什么是java 键值对
所谓键值对,你可以查看jdk文档,找MAP接口,它的实现类都是键值对的形式保存数据的 键:就是你存的值的编号值:就是你要存放的数据
- KMS错误代码收集
Q:KMS认证时,错误讯息代码0x80070005? A:-0x80070005:存取遭拒.要求的动作要求较高的权限. -这个错误讯息,代表您在执行命令提示字元(cmd)时,没有以系统管理员的身份执行 ...
- 【iCore2 模块相关资料】发布模块DEMO 代码包,目前支持 iM_TFT30、 iM_LAN和 iM_RGB 三个模块
iCore2 模块底板 和部分模块发布了,所以我们做了一个 DEMO 代码包,此代码包现在有以下功能: 1.支持 iM_TFT30 3寸触摸液晶模块(硬件已发布): 2.支持 iM_LAN 100M以 ...
- 单词游戏-基于SQLite+Qt的C++项目
SQLite文件数据库的操作 Qt插件的安装配置 1.VS2008下安装Qt开发包 解压缩4.7.3.rar到C:\Qt\4.7.3\ Qt for VS addin2.安装并配置Visual Ass ...