2017-01-18 5 views

Antwort

0

In Swift, catch Blöcke sind optional. Tatsächlich kann man die Blöcke do/catch vollständig vermeiden, indem man die optionale Syntax try verwendet. Nehmen wir zum Beispiel eine JSONSerializationtry/catch Lösung. Wenn man nicht erwischt Fehler will in irgendeiner Weise zu handhaben, kann es einfach so geschehen:

var request = URLRequest(url: URL(string: "https://example.com/")!) 
request.httpBody = try? JSONSerialization.data(withJSONObject: [], options: .prettyPrinted) 

Alternativ kann, wenn man mögliche Fehler fangen will, wäre die Syntax wie folgt:

do { 
    var request = URLRequest(url: URL(string: "https://example.com/")!) 
    request.httpBody = try JSONSerialization.data(withJSONObject: [], options: .prettyPrinted) 
} catch let error { 
    //do something with error 
} 

Lassen Sie mich wissen, ob dies Ihre Frage beantwortet.

+0

Nichts davon hat funktioniert! – Husyn

+0

Was? .. Ich benutze diese in meinem eigenen Projekt. Wenn sie nicht funktionieren, zeigen Sie bitte, wie Sie sie implementieren. @Husyn –

0

Leider ist es nicht möglich, die NSException direkt in Swift abzufangen. Dieser Teil muss Objective-C-Code sein.

@try { 
    [self removeObserver:observer forKeyPath:keyPath]; 
} @catch (NSException * __unused exception) { 
    // nothing to do 
} 

ich implementiert eine einfache Kategorie auf NSObject, die eine safelyRemoveObserver:forKeyPath: Methode bietet, die innerhalb der Swift-Code verwendet werden können: https://gist.github.com/samuel-mellert/2bb38ba4887aeecac462ad972e25d26f