Ich habe ein Protokoll, das zwei Funktionen successWeather
und errorWeather
enthält. Wenn der Statuscode etwas anderes als 200-299 zurückgibt, möchte ich, dass die errorWeather
-Funktion ausgelöst wird.Fehler in Guard-Anweisung erzwingen?
Meine Frage ist: Wie kann ich einen Fehler erzwingen, wenn der Wächter den Statuscode fängt? Ab sofort gibt der Fehler null zurück.
func errorWeather(error: NSError)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) -> Void in
if let error = error {
self.delegate.errorWeather(error: error as! NSError)
}
guard let statusCode = (response as? HTTPURLResponse)?.statusCode, statusCode >= 200 && statusCode <= 299 else {
print("Your request returned a status code other than 2xx!")
//How can I force an error?
return
}
Es ist irgendwie unklar - zumindest für mich, was ist die Beziehung zwischen dem Protokoll und der Throwable-Funktion? Könntest du es ausarbeiten? –
Ich habe es im Grunde als ein Delegiertensystem erstellt, um die API zu verwenden. In einer detailView entspricht es dem Protokoll und muss successWeather und errorWeather verwenden. @AhmadF – Casey
Also, -wenn ich es richtig gemacht habe- was ist der Zweck der Implementierung sowohl Delegate und Throwable-Funktion? Ich schlage vor, es nur eine Option zu sein, um den Fehler zu behandeln. Ist das Problem, wie Sie die delegierte oder die throwable-Funktion implementieren sollten? Möglicherweise möchten Sie auch [diese Q & A] (http://stackoverflow.com/questions/40501780/example-of-delegates-in-swift-3/40503024#40503024) überprüfen. –