处理破碎的下载

时间:2011-10-18 10:02:06

标签: iphone objective-c xcode ipad ipod

我设计了一个应用程序,它将从服务器下载一些数据,如果没有网络问题,一切正常。但是,如果下载过程中出现网络波动,则无法下载某些数据,应用程序将崩溃。 在这里,我需要你们的帮助。我是否可以编写单独的代码来处理这种情况,并通过删除不完整的下载数据重新下载整个数据。 提前谢谢你,

3 个答案:

答案 0 :(得分:1)

是。你可以做到这一点 有两种情况
1.网络不可用。
     - - >要解决此问题,您必须使用“Rechability”示例代码(由Apple提供)。在开始下载之前,您必须检查互联网的可用性      - - >或者,如果您没有检查互联网可恢复性,那么您将在NSURL连接的委托方法中获得错误代码(404):
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
2.网络波动。
    这里我的意思是在下载之间,如果网络波动。然后它会调用下面的方法
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
你可以处理这个方法中的所有内容

答案 1 :(得分:0)

当出现网络波动或类似问题时,如果您使用的是NSURLConnection或任何其他网络API,则应获取HTTP错误代码。您可以使用它来删除未完成的下载数据并通知控制器代码,以便它可以决定是否重新下载等。

答案 2 :(得分:0)

Aditya是对的。假设您正在使用NSURLConnection如果连接中断,您可以使用以下委托方法读取响应代码,

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response {
     NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
     int responseStatusCode = [httpResponse statusCode];
}

您可以继续停止连接并删除未完成的下载数据。


更新了评论的答案。

如果您在不同的类中使用不同的连接,则应在每个类中实现此连接。在我看来,你应该有一个类似于特定类将处理所有连接相关任务的设计。 (可能不适合您的要求)。但对于您当前的设计,您应该在所有课程中使用它。