Swift2.0: Cómo get el valor de retorno y el error con intentar capturar

Tengo una function en Objective-C. Esta function siempre devuelve un valor, evento si ocurre un error:

-(NSString *)test:(NSError **)error; 

Lo anulé en Swift1 como sigue, de modo que todavía puedo get el valor y el error al mismo time.

 override func test(error: NSErrorPointer) -> String { var error: NSError? let result = super.test(&error) ... } 

Pero ahora en swift2, solo puedo anular la function como

 override func test() throws -> String { } 

En este caso, ¿cómo get el valor y el error al mismo time?

Estoy haciendo esto porque necesito anular una function en AFNetworking. Tanto el valor de retorno como el error son necesarios.

 - (id)responseObjectForResponse:(NSURLResponse *)response data:(NSData *)data error:(NSError *__autoreleasing *)error; 

Sé que esto no responde a la pregunta, aunque podría ofrecer orientación sobre la forma en que funciona el event handling errores en Swift, pero esto podría ser mucho más fácil para usted.

AFNetworking tiene una biblioteca dedicada Swift llamada AlamoFire. Si su proyecto está en Swift, podría ser beneficioso para usted usar la versión rápida de la biblioteca AFNetworking. Se puede encontrar aquí:

https://github.com/Alamofire/Alamofire

Creo que realmente no necesitas el valor de BOOL devuelto. Debería ser true si todo está bien y es false contrario.

Con Swift 2 deberías usar do , try y catch . Puede detectar el error y NSError como una instancia de NSError .

Ejemplo:

 do { try something() // continue if something() returned true otherwise -> catch } catch let error as NSError { print(error.localizedDescription) } 

Con AFNetworking, puede hacer algo como esto para cambiar la descripción localizada de NSError con un post de error del JSON:

 override func responseObjectForResponse(response: NSURLResponse!, data: NSData!) throws -> AnyObject { do { try self.validateResponse(response as! NSHTTPURLResponse, data: data) } catch let error as NSError { let json = JSON(data: data) // i'm using SwiftyJSON : https://github.com/SwiftyJSON/SwiftyJSON if let errorMessage = json["error"].string { var userInfo = error.userInfo userInfo[NSLocalizedDescriptionKey] = errorMessage throw NSError(domain: error.domain, code: error.code, userInfo: userInfo) } } return try super.responseObjectForResponse(response, data: data) } 

Tal vez hay una mejor manera de hacer esto, pero estoy comenzando con Swift 2 🙂