Wunderground API JSON поиск на iPhone - PullRequest
1 голос
/ 19 ноября 2011

Никогда не трогал JSON раньше. Я пытаюсь получить доступ к некоторым переменным в API погоды Wunderground для Мельбурн . Например, допустим, я хочу получить доступ к переменной wind_dir: East. Это мой код до сих пор:

NSString *urlString = 
    [NSString stringWithFormat:
     @"http://api.wunderground.com/api/key/geolookup/conditions/forecast/q/-33.957550,151.230850.json"];

    NSLog(@"URL = %@", urlString);

    SBJsonParser *parser = [[SBJsonParser alloc] init];

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];

    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

    NSArray *weatherInfo = [parser objectWithString:json_string error:nil];

    for (NSDictionary *weatherString in weatherInfo)
    {

        NSLog(@"some weather info = %@", [[[weatherString objectForKey:@"response"] objectForKey:@"current_observation"] objectForKey:@"wind_dir"]);

    }

Мой код достигает цикла for и вылетает с этой ошибкой: - [NSCFString objectForKey:]: нераспознанный селектор, отправленный экземпляру.

Я не на 100% уверен, что вызвало сбой, и правильный ли мой путь к переменной "wind_dir", хотя они вполне могут быть той же проблемой.

Заранее спасибо за любую помощь.

1 Ответ

2 голосов
/ 19 ноября 2011

либо свойство «response», либо свойство «current_observation» является строкой, а не словарем.

ошибка, которую вы получаете, заключается в том, что вы пытаетесь вызвать «objectForKey» для строки.

после просмотра результата API кажется, что вы не получаете массив.

Вы должны сделать что-то вроде этого:

    NSDictionary *weatherInfo = [parser objectWithString:json_string error:nil];

    NSLog(@"some weather info = %@", [[weatherInfo objectForKey:@"current_observation"] objectForKey:@"wind_dir"]);

вместо выражения for.

...