errore Ho il codice HTTP in un controller AngularJS:manipolazione in Alamofire
$http.post('/api/users/authenticate', {email: $scope.email, password: $scope.password})
.success(function (data, status, headers, config) {
authService.login($scope.email);
$state.go('home');
})
.error(function (data, status, headers, config) {
$scope.errorMessages = data;
$scope.password = "";
});
In caso di successo, il server risponderà con una rappresentazione JSON di un utente. Nel caso di errore il server risponderà con una semplice stringa come User not found
a cui è possibile accedere tramite il parametro data
.
Non riesco a capire come fare qualcosa di simile in Alamofire. Ecco quello che ho in questo momento:
@IBAction func LoginPressed(sender: AnyObject) {
let params: Dictionary<String,AnyObject> = ["email": emailField.text, "password": passwordField.text]
Alamofire.request(.POST, "http://localhost:3000/api/users/authenticate", parameters: params)
.responseJSON {(request, response, data, error) in
if error == nil {
dispatch_async(dispatch_get_main_queue(), {
let welcome = self.storyboard?.instantiateViewControllerWithIdentifier("login") as UINavigationController;
self.presentViewController(welcome, animated: true, completion: nil);
})
}
else{
dispatch_async(dispatch_get_main_queue(), {
// I want to set the error label to the simple message which I know the server will return
self.errorLabel.text = "something went wrong"
});
}
}
}
Non ho idea se sto occupando del caso non sia correttamente errore e gradirebbe input su quello.
Sta usando [auto debole] necessario quando non viene referenziato? Ho sempre capito che non è necessario se la chiusura non è fortemente referenziata da nessuna parte. – chourobin
Ottima domanda, impossibile dare una risposta concisa a. Dipende dal comportamento che vuoi Se si desidera che il proprietario del metodo 'loginPressed' sia conservato in memoria, indipendentemente dal fatto che nient'altro abbia un riferimento ad esso, non si vorrebbe usare' [self debole] '. Tuttavia, si corre sempre il rischio potenziale di creare un ciclo di conservazione se non si utilizza il modello weakify/strongify. Maggiori informazioni [qui] (http://blackpixel.com/blog/2014/03/capturing-myself.html) e [qui] (http://stackoverflow.com/questions/24320347/shall-we-always-use -unowned-auto-inside-chiusura-in-veloce). – cnoon
Buona spiegazione. In Swift 3 puoi sostituire 'if let strongSelf = self {...}' con solo 'guard let strongSelf = self else {return}' – Lion