Ich benutze viele Async-Netzwerk-Anfrage (übrigens jede Netzwerkanforderung in iOS muss durch async) und ich finde Weg, Fehler besser von Apples dataTaskWithRequest
zu behandeln, die throws
nicht unterstützt.Der beste Weg, um Fehler von asynchronen Schließungen in Swift 2 zu behandeln?
Ich habe Code wie folgt aus:
func sendRequest(someData: MyCustomClass?, completion: (response: NSData?) ->()) {
let request = NSURLRequest(URL: NSURL(string: "http://google.com")!)
if someData == nil {
// throw my custom error
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// here I want to handle Apple's error
}
task.resume()
}
Ich brauche meine mögliche individuelle Fehler zu analysieren und mögliche Fehler bei der Verbindung von dataTaskWithRequest
handhaben. Swift 2 führte throws
ein, aber Sie können nicht von der Schließung von Apple werfen, weil sie keine Unterstützung für das Werfen haben und Async laufen.
Ich sehe nur Weg, um meine Fertigstellung Block NSError
zurückgeben, aber wie ich weiß mit NSError
ist alten Stil Objective-C Weg. ErrorType
kann nur mit Würfen verwendet werden (afaik).
Was ist die beste und modernste Methode zur Behandlung von Fehlern bei der Verwendung von Apple-Netzwerkverschlüssen? Es gibt keine Möglichkeit, keine Async-Netzwerkfunktionen zu verwenden, wie ich es verstehe.
Sie Errortype ohne wirft verwenden können. d. h. Rückgabe in Ihrem Beendigungshandhaber. Vielleicht möchten Sie einen Blick darauf werfen, wie Alamofire Antworten/Fehler behandelt https: // github.com/Alamofire/Alamofire/Blob/Master/Quelle/Result.swift – doschi