0

私はCLGecoderのコードを書き、コードは

-(NSString *)GetCurrentAddress:(CLLocation *)Location
{
  __block NSString  *locatedaddress;
    CLGeocoder *Gecoder=[[CLGeocoder alloc]init];
    [Gecoder reverseGeocodeLocation: Location completionHandler: 
     ^(NSArray *placemarks, NSError *error) {

         //Get address
         CLPlacemark *placemark = [placemarks objectAtIndex:0];

         NSLog(@"Placemark array: %@",placemark.addressDictionary );

         //String to address
       locatedaddress = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "];

         //Print the location in the console
         NSLog(@"Currently address is: %@",locatedaddress);


     }];
    return locatedaddress;
}

問題は内部のアドレスにあります。 completionHandler には値がありますが、外部にはありませんか? 誰でも私を助けることができますか? 前もって感謝します。

4

1 に答える 1

3

ジオコーダーは非同期です。これは、定義上、結果をすぐに取得できないことを意味します。結果を処理したい場合は、完了ハンドラを使用する必要があります。

于 2012-12-18T22:46:05.827 に答える