In der iOS App, die ich gerade erstelle, versuche ich dem Benutzer eine Nachricht anzuzeigen, wenn die Sitzung abgelaufen ist. Ich habe die Dokumentation für NSURLSessionDelegate
gelesen, konnte aber keine Methode finden, um mich wissen zu lassen, ob die Sitzung abgelaufen ist. Wie gehe ich dabei vor? Jede Hilfe wird geschätzt.iOS Swift: So finden Sie heraus, ob eine NSURLSession abgelaufen ist
Antwort
können Sie Methode aufrufen, auf diese Weise:
let request = NSURLRequest(URL: NSURL(string: "https://evgenii.com/")!)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
if error != nil {
if error?.code == NSURLErrorTimedOut {
println("Time Out")
//Call your method here.
}
} else {
println("NO ERROR")
}
}
task.resume()
Sieht nicht sehr robust aus (oder zukunftssicher). Sie codieren die Fehlerbeschreibung hart; Es könnte sich bei einem zukünftigen Betriebssystem-Update ändern (nicht um zu verhindern, dass der Benutzer sein Gerät auf eine andere Sprache als Englisch setzt). –
können Sie verwenden: Drucken (Fehler ?? "ErrorDefault") – johnny
I Swift extension
folgende bin mit zu überprüfen, ob Fehler Time-out oder andere Netzwerkfehler ist, mit Swift 4
extension Error {
var isConnectivityError: Bool {
// let code = self._code || Can safely bridged to NSError, avoid using _ members
let code = (self as NSError).code
if (code == NSURLErrorTimedOut) {
return true // time-out
}
if (self._domain != NSURLErrorDomain) {
return false // Cannot be a NSURLConnection error
}
switch (code) {
case NSURLErrorNotConnectedToInternet, NSURLErrorNetworkConnectionLost, NSURLErrorCannotConnectToHost:
return true
default:
return false
}
}
}
- 1. Finden Sie heraus, ob ein NSDate heute, gestern, morgen ist
- 2. Finden Sie heraus, ob der Energiesparmodus aktiviert ist - Android SDK
- 3. Finden Sie heraus, ob ein Funktionsargument Teil eines Funktionsaufrufs ist
- 4. Finden Sie heraus, ob Excel läuft
- 5. GVim: Finden Sie heraus, ob Guifont verfügbar ist
- 6. SourceTree: Finden Sie heraus, ob eine Verzweigung zusammengeführt wird
- 7. Finden Sie heraus, ob ein Fenster eine Menüleiste hat
- 8. Finden Sie heraus, ob eine Eigenschaft als virtuell deklariert wird
- 9. Wie finden Sie, wie viele Bytes in Swift NSURLSession lesen?
- 10. So erfahren Sie, ob eine Aufgabe abgebrochen wurde oder die Wartezeit abgelaufen ist
- 11. So finden Sie, ob eine Funktion reentrant ist
- 12. Finden Sie heraus, ob VoiceOver aktiviert ist und legen Sie VoiceOver Focus auf Apple Watch fest
- 13. Applescript: Photoshop: So finden Sie heraus, ob das Bild wirklich geöffnet ist
- 14. Wie finden Sie heraus, ob ein Steuerelement von einer Klasse
- 15. Wie finde ich heraus, ob die Zeit vergangen ist? Swift
- 16. Finden Sie heraus, ob Inhalt in jQuery Accordion auf Änderungsereignis
- 17. Swift 3 und NSURLSession Ausgabe
- 18. Swift Siesta und NSURLSession
- 19. Swift NSURLSession und Authentifizierung
- 20. Finden Sie heraus, ob die Anwendung mit CeRunAppAtTime geplant wurde
- 21. Finden Sie heraus, ob ein Befehl auf POSIX-System existiert
- 22. Finden Sie heraus, ob ein Open Graph Objekt vor
- 23. Überprüfen Sie, ob eine Funktion in Swift verfügbar ist.
- 24. Finden Sie heraus, ob ich im Einheits-Thread bin
- 25. Finden Sie heraus, ob eine Datei ein symbolischer Link in PowerShell ist
- 26. Python: Finden Sie heraus, ob eine Liste von ganzen Zahlen kohärent ist
- 27. Finden Sie heraus, ob die System App läuft
- 28. Wie finde ich heraus, ob der Token abgelaufen ist oder nicht? In machinepack-jwt
- 29. Finden Sie heraus, ob ein UIViewController aufgrund der Rückwärtsnavigation erschienen ist
- 30. Finden Sie heraus, das Produkt
Ich bin nicht Sicher, ob es für 'NSURLSession' gilt, aber 'NSURLConnection' schlägt fehl und die Delegate-Methode wird mit einem Fehlercode 'NSURLErrorTimeOut' aufgerufen, wie in dieser Antwort beschrieben: http://stackoverflow.com/a/12819297/433373 (EDIT: diese Antwort-ID über '-sendSynchronousRequest: returningResponse: error:', aber '-connection: didFailWithError:' gibt auch ein 'NSError'-Objekt zurück. Sie können das überprüfen) –