zoukankan      html  css  js  c++  java
  • 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 = %@
    ",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(@"
    destinationPath = %@
       sourcePath = %@  
     response = %@
    ",destinationPath,location.path,response);
                    if (success) {
                        success(destinationPath.lastPathComponent);
                    }
                    
                }
            }else{
                NSLog(@"
    error = %@
    ",error);
            }
            
        }] resume];
    

      2.调用下载方法

        NSString* str = @"http://pic1a.nipic.com/2008-09-05/200895134351570_2.jpg";
        [DownloadTool downloadWithURLStr:str andSuccessBlock:^(NSString *str) {
            NSLog(@"------%@",str);
        }];
    

    这样就完事了。在具体路径下,就能看到被移过去的文件了。  

  • 相关阅读:
    多数据源配置
    Oracle创建JOB
    2新建Data Adapter
    注解的CRUD;重点:多对一和一对多处理
    Mybatis分页+使用注解开发!
    继续mybatis配置resultMap;讲解日志部分
    Today has a day off.
    Mybatis其他配置!
    Mybatis优化配置!
    Mybatis的CRUD
  • 原文地址:https://www.cnblogs.com/tanglimei/p/4752726.html
Copyright © 2011-2022 走看看