iOS Swift - CLGeocoder-VervollständigungHandler-Block

Ich versuche, eine Position (CLLocation) in eine Zeichenfolge zu analysieren.

    func locationToString (currentLocation: CLLocation) -> String? {
    var whatToReturn: String?
    CLGeocoder().reverseGeocodeLocation(currentLocation, completionHandler: { (placemarks: [AnyObject]!, error: NSError!) in
        if error == nil && placemarks.count > 0 {
            let location = placemarks[0] as CLPlacemark
            whatToReturn = "\(location.locality) \(location.thoroughfare) \(location.subThoroughfare)"

        }
    })
    return whatToReturn
}

ffensichtlich gibt whatToReturn immer null zurück, da completionHandler im Hintergrund ausgeführt wird. Es fällt mir schwer zu verstehen, wie ich meinen String aktualisiere, wenn der completionHandler abgeschlossen ist.

Vielen Dank