Wunderground API JSON поиск на iPhone

Никогда не трогал 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 ответ

Решение

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

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

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

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

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

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

вместо вашего для заявления.

Другие вопросы по тегам