assetsを取得して中身全部なめて座標データから地名取得して配列にぶっこみたい。
で、実行すると全部ループ回りきったあとにreverseGeocodeLocationが一回だけ実行される。
(´・ω・`)
基本的にやりたかったことは以下↓
for (ALAsset* asset in self.photos) { ALAssetRepresentation *representation = [asset defaultRepresentation]; NSURL *url = [representation url]; LOG_CURRENT_LINE(@"%@", url); CLLocation *location = (CLLocation *)[asset valueForProperty:ALAssetPropertyLocation]; // 逆ジオコーディングの開始 [_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { LOG_CURRENT_LINE(@"ここがどう頑張っても先頭の一回しか実行されない"); if (error) { LOG_CURRENT_LINE(@"%@", error); } else { if (0 < [placemarks count]) { // ログ出力 LOG_CURRENT_LINE(@"%@", url); CLPlacemark *p = [placemarks objectAtIndex:0]; NSString *country = [p.addressDictionary objectForKey:@"Country"]; NSString *state = [p.addressDictionary objectForKey:@"State"]; [_stateMuDic setObject:state forKey:state]; LOG_CURRENT_LINE(@"%@", _stateMuDic); }else{ LOG_CURRENT_LINE(@"(取得できませんでした)"); } } }]; cnt++; }途中にdispatch_semaphore_waitとか挟んでむりやり同期する方法もためしたけどうまくいかず。
でstackoverflowで調べてみたらやっぱ同じことしてる人いた。
reverseGeocodeLocation Only Executes Completion Block Once
→ (`・ω・´)短いスパンで呼び出してはダメってAppleのドキュメントにかいてあるよ
・・・だそうな。えええええぇぇぇぇぇぇぇ・・・・・。
げ、原文読むのしんどい。
0 件のコメント:
コメントを投稿