我拉從谷歌地圖的一些數據,但我似乎無法做任何事情。這裏是我的代碼:從谷歌解析json的iOS地理編碼數據
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection {
//do something with the data!
NSError *e = nil;
//parse the json data
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: receivedData options: NSJSONReadingMutableContainers error: &e];
//get the lat and long and put it into an array
locationData = [[NSMutableArray alloc] init];
NSLog(@"%@", [jsonArray objectAtIndex:0]);
}
如果我登錄jsonArray.count我得到2,這似乎是正確的,因爲谷歌將在頂層返回結果和狀態。但如果我試圖獲得對象0,它會崩潰。如果我嘗試做這樣的事情,它也崩潰:
- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection {
//do something with the data!
NSError *e = nil;
//parse the json data
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: receivedData options: NSJSONReadingMutableContainers error: &e];
//get the lat and long and put it into an array
locationData = [[NSMutableArray alloc] init];
for(NSDictionary* thisLocationDict in jsonArray) {
NSString* location = [thisLocationDict objectForKey:@"results"];
[locationData addObject:location];
}
}
我使用此代碼從Twitter獲取數據沒有問題。我在控制檯得到的錯誤是我試圖得到一個字符串的對象:
-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x798a270
這裏的JSON谷歌是給我:
結果=( { 「address_components」 =( { 「LONG_NAME」= 2900; 「SHORT_NAME」= 2900; 類型=( 「street_number」 ); },{ 「long_n ame「=」Horizon Dr「; 「short_name」=「Horizon Dr」; ( 路線 ); }, { 「long_name」=「普魯士國王」; 「short_name」=「普魯士國王」; types =( locality, political ); }, { 「long_name」=「Upper Merion」; 「short_name」=「Upper Merion」; 類型=( 「administrative_area_level_3」, political ); }, { 「long_name」= Montgomery; 「short_name」=蒙哥馬利; types =( 「administrative_area_level_2」, political ); }, { 「long_name」= Pennsylvania; 「short_name」= PA; types =( 「administrative_area_level_1」, political ); }, { 「long_name」=「美國」; 「short_name」= US; 類型=( 國家, 政治 ); }, { 「long_name」= 19406; 「short_name」= 19406; types =( 「postal_code」 ); } ); 「formatted_address」=「2900地平線博士,普魯士國王,PA 19406,美國」; geometry = { location = { lat =「40.0896985」; lng =「-75。341717" ; }; 「LOCATION_TYPE」= ROOFTOP; 視= { 東北= { LAT = 「40.09104748029149」; LNG = 「-75.34036801970849」; }; 西南= { LAT = 「40.0883495197085」; LNG = 「-75.34306598029151」; }; }; }; 類型=( 「STREET_ADDRESS」 ); } ); 狀態= OK; }
和URL我傳遞:
http://maps.googleapis.com/maps/api/geocode/json?address=2900+Horizon+Drive+King+of+Prussia+,+PA&sensor=false
任何知道我做錯了嗎?
這是不是一個真正的解決方案爲您的例外,但我會建議你在系統內置的CLGeoCoder https://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLGeocoder_class/Reference/Reference.html。你有地址,座標等。 – Lars
嘿謝謝,我沒有想到蘋果提供了前瞻性的地理定位。活到老,學到老。 :D – PruitIgoe