对于我的学士论文,我必须为iOS实施一个电子学习应用程序。正如您在标题中看到的那样,我必须在文档目录中下载一个大小接近1或2 GB的文件。我是iOS-Development的新手,所以我很感激每一个提示我如何处理它。
非常感谢提前!
答案 0 :(得分:1)
您阅读了NSURLConnection
和ASIHTTP
的好处。但是你必须意识到ASIHTTP不再被积极开发/维护。 NSURLConnection
有助于理解和学习基础知识。
对于日常使用,我建议您使用AFNetworking
。它使用简单,包含了解如何使用它的示例。
为了下载大文件,建议将下载的数据直接写入文件,而不是将其存储在内存中。使用AFNetorking
you can do this by,
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:@"download.zip" append:NO];
我没有尝试过自己下载那些大数据,但我相信这对你来说是一个很好的起点。
AFNetworking :https://github.com/AFNetworking/AFNetworking
API文档:http://cocoadocs.org/docsets/AFNetworking/2.0.0-RC2/
快乐的编码!
答案 1 :(得分:0)
好吧,因为这很可能需要一段时间才能下载,我肯定会建议使用NSURLRequests
和NSURLConnections
异步执行此操作。
我最关心的是这个下载的纯粹大小以及它可能不适合RAM,所以这个下载实际上可能并不像看起来那么容易。你可以尝试一下,但我建议如果可能的话将其分成多个文件/下载。
当我找到我之前写的代码时,我会在一分钟后发布代码。
已添加代码
首先,让您需要进行下载的课程为NSURLConnectionDelegate
和`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
}