2016-06-11 56 views
0
的帮助下得到的数据

我写了一些测试代码我不能NSURLSession

-(void)downloadFile 
{ 
    [self getFile:^(id result) { 

     if([result isKindOfClass:[NSData class]]) 
     { 
     self.myData=result; 
     } 

    }]; 

    NSLog(@"%lu",(unsigned long)[self.myData length]); 
} 

-(void)getFile:(void(^)(id result))completionHandler 
{ 
    void(^partCompetionHandle)(NSURL *, NSURLResponse *, NSError *)=^(NSURL *url, NSURLResponse *response, NSError *error){ 

     if(response==nil){ 
      completionHandler(error); 
      return; 
     } 

     NSData *data=[NSData dataWithContentsOfURL:url]; 

     completionHandler(data); 
    }; 
    self.session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

    NSURL *url=[NSURL URLWithString:@"http://upload.wikimedia.org/wikipedia/commons/7/7f/Williams_River-27527.jpg"]; 

    NSURLSessionDownloadTask *dataTask =[_session downloadTaskWithURL:url completionHandler:^(NSURL* data, NSURLResponse * response, NSError * error) { 
     partCompetionHandle(data, response, error); 

    }]; 
    [dataTask resume]; 
} 

我的数据都是零,当我下载了他们的 此行显示0

NSLog(@"%lu",(unsigned long)[self.myData length]); 

回答

1

经典:作为该任务是异步执行的,结果的记录比数据下载要早得多。

把日志行中完成块

-(void)downloadFile 
{ 
    [self getFile:^(id result) { 
     if([result isKindOfClass:[NSData class]]) { 
     self.myData=result; 
     NSLog(@"%lu",(unsigned long)[self.myData length]); 
     } 
    }]; 
} 
0

我改变了代码。但我没有看到数据

-(void)downloadFile 
    { 
    [self getFile:^(id result) { 

     if([result isKindOfClass:[NSData class]]) 
     { 
      self.myData=result; 
      NSLog(@"%lu",(unsigned long)[self.myData length]); 
     } 

    }]; 
    } 

我叫方法downloadFile主要功能

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     DownloadFile *donload=[DownloadFile new]; 

     [donload downloadFile]; 
    } 
    return 0; 
} 

我怎样才能获得数据?

+1

不要通过回答自己的问题来提出新的问题! **编辑**问题。失败的原因是一个简单的命令行界面没有运行循环,而'NSURLSession'需要一个 – vadian