haciendo una request asincrónica de alamofire sincrónica

Estoy intentando realizar una request de publicación de alamofire en swift

func checkIfUserExistsInDB(userName: String) -> NSString { print ("IN") var info: NSString = "" Alamofire.request(.POST, "http://blablabla.com/getuserdata", parameters: ["queryValue": userName,], encoding:.JSON).responseJSON { request, response, result in switch result { case .Success(let JSON): info = NSString(data: JSON.dataUsingEncoding(NSUTF8StringEncoding)!, encoding: NSUTF8StringEncoding)! case .Failure(let data, _): print ("IN") if let data = data { info = (NSString(data: data, encoding: NSUTF8StringEncoding)!) print (info) } } } return info } 

pero me encuentro en problemas para hacerlo sincrónicamente. Soy consciente de que no se acepta generalmente una function asíncrona (como la proporcionada por Alamorfire), pero en mi caso tengo que hacerlo sincrónicamente.

Es bastante fácil implementar un bloque de finalización en Swift.

Esta es su function con un bloque de finalización.

 func checkIfUserExistsInDB(userName: String, completion:(String) -> Void) { Alamofire.request(.POST, "http://blablabla.com/getuserdata", parameters: ["queryValue": userName,], encoding:.JSON).responseJSON { request, response, result in switch result { case .Success(let JSON): let info = String(data: JSON.dataUsingEncoding(NSUTF8StringEncoding)!, encoding: NSUTF8StringEncoding)! completion(info) case .Failure(let data, _): if let errorData = data, info = String(data: errorData, encoding: NSUTF8StringEncoding) { completion(info) } } } } 

y se puede llamar con ( info es la cadena devuelta asincrónicamente)

 checkIfUserExistsInDB("string") { (info) in print(info) }