почему метод nsurldelegates не вызывается при разборе json в iphone - PullRequest
1 голос
/ 18 июля 2011

Я разрабатываю одно приложение для iphone из API Google Мест. Для этого я делаю разбор 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 Ответ

0 голосов
/ 18 июля 2011

In:

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

Чтобы эти методы были вызваны, делегат должен быть self, поскольку эти методы реализованы в JsonParse.

...