2016-11-23 50 views
0

我有一个iOS应用程序,我从一个亚马逊S3服务器的plist文件中获取数据。我想使用新的NSURLSession框架来获取数据。所以我有以下代码(我使用的是Ray Wenderlich网络教程)。NSURLSession没有从plist文件检索数据

NSString *dataUrl = @"https://s3.amazonaws.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.plist"; 
    NSURL *url = [NSURL URLWithString:dataUrl]; 

    // 2 
    NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession] 
              dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
               // 3: Handle response here with more of my code 
              }];// 4  
[downloadPhotoTask resume]; 

如果我从* dataURL复制URL并将其放到网络浏览器中,它就会下载文件。但在我的iOS应用程序中没有数据,错误是“流中的字节太少”。

有没有人有我缺少的想法?

+1

你正在恢复错误的任务。 – vadian

+0

因此,在你的completionHandler(评论#3)数据是零,你会得到一个NSError,说流中的字节太少?你能发布确切的错误消息,以及关于'data'和'response'的信息吗? –

+0

您是否检查了completionHandler中的错误?此外,您的代码与Ray Wenderlich代码不同,具体而言,downloadTask是一个局部变量。我不知道它在超出范围时的表现如何,但很有可能会取消下载。 – Gruntcakes

回答

0

从第一次看代码本身应该工作。你有没有想过 [downloadTask resume];

+0

是的,它是[downloadTask resume]。我的错误 – K2Digital

+0

原来我引用了错误的数据流。我的错。谢谢大家的支持。 – K2Digital

+0

这个[link](https://www.raywenderlich.com/76341/use-nsoperation-nsoperationqueue-swift)在服务器端使用plist文件。 – Nik