用于NSURLConnection的networkManager

时间:2014-02-27 15:07:48

标签: ios uiviewcontroller nsurlconnection

所有

我创建了一个包含多个ViewControllers的应用。在viewController中,我使用NSURLConnection从Web服务器获取数据。现在,在每个ViewController中,我用以下内容发布数据:

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.data.com/GetAllRequestsToPlay.php"]]];

NSString *post       = [NSString stringWithFormat:@"PI=%i",self.ownPlayer.playerID.intValue];
NSData   *postData   = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPShouldHandleCookies:YES];
[request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

//set post data of request
[request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];

并且在每个viewController中我都有以下方法:

  • - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
  • - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
  • - (void)connectionDidFinishLoading:(NSURLConnection *)connection {

这都是多余的,因为这些方法中的代码在每个viewController中都是相同的。

所以我想创建一个模型类“connectionManager”,它在每个viewController中用来做所有的网络(发送帖子和处理响应)。

我的问题:

  • 是否有教程或示例代码如何创建?
  • 如何能够在connectionManager中捕获响应(所以“连接”方法)
  • 如何通知正确的viewController接收数据并且ViewController必须对数据执行某些操作?

1 个答案:

答案 0 :(得分:0)

创建一个仅处理NSURLConnections的NSObject类。在此类中包括所有必需的委托,并添加NSNotification以在收到数据时提醒其他类。

然后在需要它的每个ViewController中实例化该类,并监听NSNotification以处理接收到的数据。