为什么我使用NSURLConnection接收“connectionFailed无法识别的选择器”?

时间:2013-11-02 14:11:36

标签: ios nsurlconnection

我试图用NSURLConnection发布数据。这是我的代码:

responseData = [[NSMutableData alloc]init];

self.regData=data;

NSString *postString = [NSString stringWithFormat:@"name=%@&email=%@&regId=%@unique_id=%@",self.regData.name,self.regData.email,self.regData.regId,UNIQUE_ID];

NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc]initWithURL:url ];
NSData *postData = [postString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
[req setHTTPMethod:@"POST"];
[req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-type"];
[req setValue:[NSString stringWithFormat:@"%d",[postData length]] forHTTPHeaderField:@"Content-Length"];
[req setHTTPBody:postData];
(void)[NSURLConnection connectionWithRequest:req delegate:self];

但是,我收到了这样的例外

 NSInvalidArgumentException', reason: '-[MAAppDelegate connectionFailed]: unrecognized selector sent to instance 0x15d8b310'
*** First throw call stack:
(0x30fbaf53 0x3b2e46af 0x30fbe8e7 0x30fbd071 0x30f0c598 0x19cb83 0x318f43a3 0x318f42e7    0x318f5031 0x319804fd 0x30c280ef 0x30c26ae3 0x30c5831f 0x30eee719 0x30bbec3d 0x30bbeb0d 0x30bbe9a1 0x30f8618b 0x30f8565b 0x30f83e4f 0x30eeece7 0x30eeeacb 0x35bc7283 0x33790a41 0x187dbd 0x3b7ecab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

有几点想法:

  1. 您的错误消息似乎与您的代码示例无关,而是报告您尝试为您的应用委托调用名为connectionFailed的方法。我假设您有一些代码试图通过该名称调用方法。您应该更新您的问题以包含该代码。

  2. 您可能需要add an exception breakpoint,以便识别导致此异常的代码行。这可以简化您对问题的诊断。

  3. 顺便说一句,您在unique_id数据中POST之前错过了&符号,因此即使修复了上述问题,此请求也无效。

  4. 您确实应该将参数转换为POST数据。也许你没有任何需要在你的数据中转义的字符,但为了安全起见,你真的应该调用CFURLCreateStringByAddingPercentEscapes百分比来逃避你的数据。有关示例NSString类别的信息,请参阅this answer,您可以调用这些类别以正确的百分比转义数据。