Swift: Obtenir une "expression ambiguë" quand essayer de passer la fonction de rappel à la ligne de rappel
J'ai cette classe pour l'authentification d'un utilisateur à l'encontre de mon backend.
class BackendService {
class func performLogin(#email: String, password: String, success:((res: NSHTTPURLResponse, json: JSON, statusCode: HTTPStatus))->(), failure: (NSError)->()) {
let loginURL = baseURL + "/login"
let parameters = ["email": email, "password": password]
Alamofire.request(.POST, loginURL, parameters: parameters).responseJSON { (req, res, json, err) in
if(err != nil) {
let response = (error: err!)
failure(response)
}
else {
if let httpStatus = HTTPStatus(rawValue: res!.statusCode) {
let response = (res: res, json: JSON(json!) , statusCode: httpStatus)
success(response)
}
}
}
}
Dans success(response)
je suis Type of expression is ambiguous without more context
. Des idées?
Est-il un meilleur, plus Swifty façon, à l'écriture de cette classe?
source d'informationauteur Thanos
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle il n'était pas de la compilation a été, une autre paire de parenthèses autour de la réussite d'un tuple de la déclaration. Si vous les enlevez, puis de compiler. Voici une version mise à jour de votre fonction avec aussi peu de changements que possible, qui compile.
Voici une version mise à jour de votre fonction d'origine qui est certainement plus propre, mais n'est pas tout à fait sûr encore. Une bonne règle de base est le plus de points d'exclamation, plus le risque.
Vous devriez vraiment jeter un oeil à @mattt est génial logique de validation intégré dans le
Alamofire.Request
classe. De cette façon, vous pouvez supprimer la nécessité pour leHTTPStatus
énumération complètement.public func validate() -> Self
public func validate(contentType array: [String]) -> Self
public func validate(statusCode array: [Int]) -> Self
public func validate(statusCode range: Range<Int>) -> Self
public func validate(validation: Validation) -> Self