-1

对于我的学士论文,我必须为 iOS 实现一个电子学习应用程序。正如您在我的标题中看到的,我必须在文档目录中下载一个大小接近 1 或 2 GB 的文件。我是 iOS 开发的新手,所以我会很感激我如何处理这个问题的每一个提示。

提前谢谢了!

4

2 回答 2

1

很好,您已经阅读了NSURLConnectionASIHTTP。但是你必须知道 ASIHTTP 不再被积极开发/维护。NSURLConnection很好理解和学习基础知识。

对于日常使用,我建议您使用AFNetworking. 它使用简单,并包含了解如何使用它的示例。

对于下载大文件,建议将下载的数据直接写入文件,而不是将其存储在内存中。使用AFNetorking你可以做到这一点

operation.outputStream = [NSOutputStream outputStreamToFileAtPath:@"download.zip" append:NO];

我没有尝试自己下载这些大数据,但我相信这对你来说是一个很好的起点。

AFNetworkinghttps ://github.com/AFNetworking/AFNetworking
API 文档http ://cocoadocs.org/docsets/AFNetworking/2.0.0-RC2/

快乐编码!

于 2013-08-22T12:20:30.737 回答
0

好吧,因为这很可能需要一段时间才能下载,所以我绝对建议使用NSURLRequests和异步执行此操作NSURLConnections

不过,我最大的担忧是此下载的纯大小以及它如何可能不适合 RAM,因此此下载实际上可能不像看起来那么容易。您可以试一试,但我建议尽可能将其分解为多个文件/下载。

当我找到我之前编写的代码时,我会在一分钟内发布代码。

添加代码

首先,将需要下载的类设为NSURLConnectionDelegateand `NSURLConnectionDataDelegate

然后可以如下实现下载请求。

NSMutableData *linkData = [[NSMutableData alloc] init];
NSURLRequest *linkRequest = [[NSURLRequest alloc] initWithURL:youURL cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:10.0];
NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:linkRequest delegate:self];

该变量linkData实际上应该在接口文件中声明,然后在实现中分配,但为简洁起见,我只是像上面那样创建它。

然后你需要以下将被调用的方法

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [linkData appendData:data];
}

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
     // handle a fail
}

-(void) connectionDidFinishLoading:(NSURLConnection *)connection {
    // do what you need when download finishes
}
于 2013-08-22T12:11:59.473 回答