Опитвам се да анализирам JSON на този URL адрес:
http://maps.googleapis.com/maps/api/geocode/json?address=canada&sensor=false
в Objective-C. Опитвам се да получа североизточната ширина под „граници“ и това е кодът, който съм написал, за да опитам и да направя това (feed
е NSDictionary
обект):
NSArray *results = [feed objectForKey:@"results"];
NSDictionary *firstResult = [results objectAtIndex:0];
NSArray *geometry = [firstResult objectForKey:@"geometry"];
NSDictionary *firstGeo = [geometry objectAtIndex:0];
NSArray *bounds = [firstGeo objectForKey:@"bounds"];
NSDictionary *northeast = [bounds objectAtIndex:0];
NSString *neLat = [[NSString alloc] initWithString:[northeast objectForKey:@"lat"]];
Въпреки че той компилира добре и JSON данните са валидни, когато го пускам, получавам тази грешка:
[__NSCFDictionary objectAtIndex:]: неразпознат селектор, изпратен до екземпляр 0xa672390 2012-02-24 01: 32: 06.321 Гео [570: 11603] * Приложение за прекратяване поради изключено изключение "NSInvalidArgumentException", причина: "- [__ NSCFDictionary objectAtIndex:]: неразпознат селектор, изпратен до инстанция 0xa672390"
Не знам защо това се случва, тъй като успях long_name
преди ... всяка помощ е високо оценена :)
Благодаря предварително!
Отговори:
2 за отговор № 1Най- geometry
и bounds
вече са речници.
"geometry" : { // <-- a dictionary!
"bounds" : { // <-- also a dictionary!
"northeast" : {
"lat" : 83.1150610,
"lng" : -52.62040200000001
},
Така че трябва да пишете
NSDictionary *geometry = [firstResult objectForKey:@"geometry"];
NSDictionary *bounds = [geometry objectForKey:@"bounds"];
NSDictionary *northeast = [bounds objectForKey:@"northeast"];
1 за отговор № 2
Проверете следното твърдение.
NSArray *geometry = [firstResult objectForKey:@"geometry"];
Изглежда за geometry
, не връща NSArray. Връща се NSDictionary