La définition de l'adresse de la chaîne avec reverseGeocodeLocation: et retour à partir de la méthode

Je suis tenter de localiser un début et de fin d'une chaîne d'adresse, afin que je puisse la stocker dans NSUserDefaults. Le problème est que la méthode continue à exécuter et ne fixe pas de ma variable.

NSLog(@"Begin");

__block NSString *returnAddress = @"";

[self.geoCoder reverseGeocodeLocation:self.locManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
    if(error){
        NSLog(@"%@", [error localizedDescription]);
    }

    CLPlacemark *placemark = [placemarks lastObject];

    startAddressString = [NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@",
                          placemark.subThoroughfare, placemark.thoroughfare,
                          placemark.postalCode, placemark.locality,
                          placemark.administrativeArea,
                          placemark.country];
    returnAddress = startAddressString;

    //[self.view setUserInteractionEnabled:YES];
}];
NSLog(returnAddress);

NSLog(@"Einde");

C'est ce que mon débogueur d'application montre:

commencer

einde

Si par exemple l'adresse de mon emplacement est le suivant : "Mainstreet 32, de la VILLE". Alors ce que je voudrais voir est la suivante:

Commencer

Mainstreet 32, VILLE

Einde

Le problème est que mon code n'est pas d'attendre que mon CLGeocoder à la fin, donc ma variable returnAddress n'est pas défini lorsqu'il est retourné, et il est vide.

Personne ne sait comment contourner ce problème?

InformationsquelleAutor Wesley | 2013-01-15