我设计了一个应用程序,它将从服务器下载一些数据,如果没有网络问题,一切正常。但是,如果下载过程中出现网络波动,则无法下载某些数据,应用程序将崩溃。 在这里,我需要你们的帮助。我是否可以编写单独的代码来处理这种情况,并通过删除不完整的下载数据重新下载整个数据。 提前谢谢你,
答案 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];
}
您可以继续停止连接并删除未完成的下载数据。
更新了评论的答案。
如果您在不同的类中使用不同的连接,则应在每个类中实现此连接。在我看来,你应该有一个类似于特定类将处理所有连接相关任务的设计。 (可能不适合您的要求)。但对于您当前的设计,您应该在所有课程中使用它。