Nicht-optional-Ausdruck vom Typ "AnyObject" gebraucht in einem check für die Optionen
Erstellte ich eine Erweiterung auf 'Wörterbuch', um mir zu helfen parse JSON. Die folgende Methode hilft mir dabei:
func toJSONString() -> String? {
if let dict = self as? AnyObject {
if let data = try? JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions(rawValue: 0)) {
if let json = String(data: data, encoding: String.Encoding.utf8) {
return json
}
}
}
return nil
}
Tritt das Problem auf diese Zeile:
if let dict = self as? AnyObject {
Bekomme ich eine Warnung aus, daß "Non-optionaler Ausdruck vom Typ "AnyObject" gebraucht in einem check für die Optionen"
Wie gehe ich über die Lösung dieses Problem?
- Sie brauchen nicht zu packen oder cast
self
Sie bereits wissen, dass es ein Wörterbuch. Geben Sie einfachself
direkt an derJSONSerialization.data(...)
Funktion. - Die Fehlermeldung sagt: Das Objekt ist nicht ein optionales,
if let
können nicht verwendet werden. - Ahhh, das macht Sinn. Ich danke Ihnen so sehr
- Könnten Sie beantworten Ihre eigene Frage bitte, daran interessiert zu sehen, die Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie einfach die Zeile, die bewirkt, dass die Warnung vor den code und pass
self
wie für dieJSONSerialization
Funktion. Dies sollte ohne Probleme funktionieren:Ihre sind dem Auspacken-etwas, das bereits ausgepackt. Werfen Sie einen Blick auf diese stackoverflow-post