2011-10-18 81 views
1

我设计了一个应用程序,它将从服务器下载一些数据,并且如果没有网络问题,所有工作都正常。但是,如果在下载过程中有一些网络波动,一些数据将不会被下载,应用程序将崩溃。 在这里,我需要你们的帮助。我能否编写单独的代码来处理这种情况,并通过删除未完成的下载数据来重新下载整个数据。 预先感谢您,处理中断下载

+0

尝试张贴的一些代码里面所有的东西你正在做什么。 –

回答

0

当有任何网络波动或类似问题时,如果您使用NSURLConnection或任何其他网络API,您应该得到一个HTTP错误代码。你可以用它来删除不完整的下载数据并通知控制器代码,以便决定是否重新下载等。

+0

非常感谢Aditya Kumar Pandey的回复。但我正在我的应用程序的不同类中下载不同的文件。我只想知道我是否可以在单独的类中编写此代码,并处理此类中的所有下载。如果是这样,那么单个函数是否足够,以及它的参数和返回类型是什么。 –

0

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

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

,你可以停止移动的连接,并删除您未完成的下载数据进行。


更新回答该评论。

如果你在不同的类中使用不同的连接,你应该在每个类中实现它。在我看来,你应该有一个设计,就像一个特定的班级将处理所有连接相关的任务。 (可能会不符合你的要求)。但是对于你目前的设计,你应该在你所有的课程中使用它。

+0

非常感谢你ElanthiraiyanS为您的快速回复。但我正在我的应用程序的不同类中下载不同的文件。我只想知道我是否可以在单独的类中编写此代码,并处理此类中的所有下载。如果是这样,那么单个函数是否足够,以及它的参数和返回类型是什么。 –

+0

更新了我的答案。 – sElanthiraiyan

1

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