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"]);
вместо вашего для заявления.