¿Hay una mejor manera de devolver la respuesta de las requestes de networking?

He creado una class de authentication (trato esto como un model) que acepta cnetworkingenciales de inicio de session y un cierre. El cierre devuelve la respuesta de la request de networking al controller. Solo quiero saber si esta es una mejor manera de hacerlo, si no, ¿cuál es la mejor manera de hacerlo?

Nota: estoy usando la biblioteca SwiftyJson

Función del model

func login(userName: String, password: String, completionHandler: (response: JSON) -> ()) { let device = UIDevice().identifierForVendor let postData = "login=\(userName)&password=\(password)&deviceid=\(device)" let request = NSMutableURLRequest(URL: NSURL(string: APP_SERVICE_LOGIN)!) request.HTTPMethod = HTTP_REQUEST_POST request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding) let task = NSURLSession.shanetworkingSession().dataTaskWithRequest(request) { (data, response, error) -> Void in if (error == nil) { completionHandler(response: JSON(data: data!)) } else { print("Error = \(error)") print("Response = \(response)") } } task.resume() } 

Controlador

 override func viewDidLoad() { super.viewDidLoad() authentication.login("test@test.com", password: "test", completionHandler: {(response: JSON) -> () in print(response) }) } 

Gracias

Lo que está haciendo es la forma correcta de establecer contactos.

Lo único que le aconsejaría que tenga es un contenedor de networking por separado que toma el encabezado, el cuerpo y el bloque de finalización y hace todas las networkinges en nombre de otros.

De esa forma, no necesita hacer frente a NSMutableURLRequest , NSURLSession , etc. una y otra vez. Llame a su class de networking personalizada con una API simple y estará bien. ¡También ayuda a la debugging cinput en un solo lugar!