taker
ist ein Wörterbuch. Wenn ich taker["user_id"]
für Null-Wert überprüfe. Es sagt, es ist nicht Null. Aber wenn ich es auspacke, enthält es tatsächlich Nullwert. Hier ist meine Debugger-Ausgabe. Wie ist das möglich?Swift optional Nullprüfung gibt ein anderes Ergebnis zurück als der aktuelle Fall
Antwort
po taker["user_id"]
gibt Ihnen die richtige Antwort: Some: <null>
bedeutet, dass, was innerhalb des Nullable-Wert ist null. Selbst ohne Foundation-Interop könnten Sie etwas Ähnliches mit einem Wörterbuch mit optionalen Werten erhalten (wie [Int: Int?]
, in welchem Fall der Ergebnistyp des Indexes Int??
wäre).
In Ihrem Fall ist es jedoch "nur", dass das Objekt im optionalen eine Instanz von NSNull()
ist. ist ein spezieller Typ, den Sie an Orten verwenden, wo nil
nicht akzeptabel wäre. Zum Beispiel unterstützen Objective-C NSDictionaries keine nil
Werte (da sie nil
für Schlüssel zurückgeben, die im Wörterbuch nicht vorhanden sind). Wenn Sie signalisieren möchten, dass ein Schlüssel NSDictionary
existiert, aber keinen Wert hat, ist es am üblichsten, ihn mit einem Wert von zu verknüpfen.
Ich vermute, dass taker
ist ein Wörterbuch von JSON abgeleitet. Sie sollten überprüfen, dass der Wert neben dem vorhandenen Schlüssel den von Ihnen erwarteten Typ aufweist. Dies wird s und möglicherweise andere falsche Eingaben aussortiert. Zum Beispiel:
if let value = taker["user_id"] as? Int {
// things here
}
Dies ist der Fall
Sie Wörterbuch enthält sein kann NSNull() als Wert
let dictionary: [String: AnyObject] = ["id": NSNull()]
if dictionary["id"] == nil {
print("is Nil")
}else {
print("Not Nil") // prints: Not Nil as this is true
}
print(dictionary["id"]) // Optional(<null>)
- 1. CLGeocoder gibt ein anderes Ergebnis zurück als MKReverseGeocoder
- 2. Swift: flatmap gibt immer noch optional zurück
- 3. Warum gibt Swift null-coalescing ein Optional zurück?
- 4. Warum gibt `{} + []` in Javascript ein anderes Ergebnis von `a = {} + []` zurück?
- 5. Warum PostgreSQL gibt ein anderes Ergebnis für Simular Regexp zurück?
- 6. JUnit4 TextUtils.isEmpty() gibt ein anderes Ergebnis als String.isEmpty()
- 7. Gibt COUNT (*) immer ein Ergebnis zurück?
- 8. Page.AppRelativeVirtualPath gibt nach dem Veröffentlichen der Website ein anderes Ergebnis zurück
- 9. Postgres EXPLAIN gibt nie ein Ergebnis zurück
- 10. NSURLSessionDataTask gibt ein falsches Ergebnis zurück
- 11. Swift Generics: Funktion mit T.Type als Parameter gibt optional zurück T
- 12. google.maps.places.PlacesService gibt nur ein Ergebnis zurück
- 13. Gibt ein Ergebnis von LINQ zurück Abfrage
- 14. Tessnet 2 gibt ein falsches Ergebnis zurück
- 15. Summe mit Pythons Unsicherheiten geben ein anderes Ergebnis als erwartet
- 16. warum PHP hash_hmac (‚sha256‘) anderes Ergebnis als Java gibt sha256_HMAC
- 17. ArrayList.remove gibt anderes Ergebnis, wenn sie als Collection.remove
- 18. GetWeekOfYear gibt falsches Ergebnis zurück?
- 19. SQL Server gibt ein anderes Ergebnis an einen physischen Rechner mit Dezimalzahlen zurück
- 20. Ajax anderes Ergebnis als PHP-Serverside bietet
- 21. RethinkDB Python-Abfrage gibt ein anderes Ergebnis aus als Daten-Explorer
- 22. Die Java-Entschlüsselung bietet ein anderes Ergebnis als das Original
- 23. Optional Parameter in Enum Fall in schnellen
- 24. Datumsformat gibt anderes Ergebnis in AngularJS
- 25. Warum gibt numpy std() matlab std() ein anderes Ergebnis?
- 26. RestKit RKObjectMapping Swift Optional
- 27. Google Guava ImmutableList equals Die Methode gibt ein anderes Ergebnis als java.utils.List zurück und bricht den List-Interface-Vertrag ab.
- 28. Swift optional Ausgabe
- 29. "VerifyTextPresent" gibt ein falsches Ergebnis für Selenium IDE zurück
- 30. Warum gibt Mod in einem Ausdruck ein anderes Ergebnis als in einem Funktionsaufruf?
Wenn Ihr Wörterbuch wie ist 'lassen Wörterbuch: [String: ANYOBJECT] = [“ id ": NSNull()]' then 'dictionary [" id "] = Optional ()' aber wenn du nach nil i suchst, wird e als non nil value zurückgegeben. –
Khundragpan