为什么在iphone中解析json时不调用nsurldelegates方法

时间:2011-07-18 07:39:39

标签: iphone json delegates nsurlconnection

我正在从google places API开发一个iphone应用程序。为此,我正在进行JSON解析以获取数据。

对于JSON解析,我创建了一个类,我正在编写这些方法 在JsonParse.m文件中写入以下方法:

- (void)initWithURLString:(NSString *)aURLString parameter:(UIViewController *)viewController
{

    NSURL *url = [NSURL URLWithString:aURLString];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    connection=[[NSURLConnection alloc] initWithRequest:request delegate:viewController];

}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [responseData setLength:0];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [responseData appendData:data];
}

-(void)connection:(NSURLConnection *)connection  didFailWithError:(NSError *)error
{
    label.text=[NSString stringWithFormat:@"error in the connection %@",[error    description]];
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   NSString *responsestring=[[NSString alloc] initWithData:responseData  encoding:NSUTF8StringEncoding];

    NSLog(@"response string is %@",responsestring);

    NSError *error;
    SBJSON *json=[[SBJSON new]autorelease];
    NSMutableDictionary *response=[NSMutableDictionary dictionary];
    response=[json objectWithString:responsestring  error:&error];

    NSLog(@"values in the dictionary is %@",[response valueForKey:@"results"]);         
} 

我正在调用viewcontroller类中的方法,如下所示:

JsonParse *obj=[[JsonParse alloc] init];
[obj initWithURLString:urlstr parameter:self];

但是当我调试时,只调用initwithurl方法,不调用其他连接委托方法 以前我在viewcontroller类中编写了同一类的方法,当时每个方法都被调用,我能够删除数据。
我已经在单独的类中编写了这个方法,因为在同一个viewcontroller类中我想要多次解析数据(使用不同的URL更多次1次)。

有谁知道为什么不调用这些方法或者如何在同一个类中解析多次?任何教程或示例代码?

1 个答案:

答案 0 :(得分:0)

在:

// the delegate must be self
connection=[[NSURLConnection alloc] initWithRequest:request
                                           delegate:viewController];

委托应为self,以便调用这些方法,因为这些方法是在JsonParse中实现的。