Wie nilkann man Swift Dictionary aufwerten?
Grundsätzlich genauso, wie Sie einem Wörterbuch einen anderen Wert hinzufügen. Sie benötigen zunächst ein Wörterbuch mit einem Werttyp, der Ihren Wert enthalten kann. Der Typ AnyObjectkann keinen Wert haben nil. Ein Wörterbuch vom Typ [String : AnyObject]kann also keinen Wert haben nil.
Wenn Sie ein Wörterbuch mit einem Werttyp hatten, der ein optionaler Typ war [String : AnyObject?], kann es nilWerte enthalten. Zum Beispiel,
let x : [String : AnyObject?] = ["foo" : nil]
Wenn Sie die tiefgestellte Syntax verwenden möchten, um ein Element zuzuweisen, ist dies etwas schwierig. Beachten Sie, dass ein Index vom Typ Typ [K:V]hat V?. Die Option dient dazu, beim Herausgeben anzugeben, ob für diesen Schlüssel ein Eintrag vorhanden ist oder nicht, und wenn ja, den Wert. und wenn Sie es eingeben, können Sie entweder einen Wert festlegen oder den Eintrag entfernen (durch Zuweisennil ).
Das heißt, für unser Typwörterbuch [String : AnyObject?]hat der Index Typ AnyObject??. Wenn Sie einen Wert in den Index einfügen, können Sie mit der Option "Outer" optional einen Wert festlegen oder den Eintrag entfernen. Wenn wir einfach schreiben würden
x["foo"] = nil
Der Compiler schließt daraus, dass es sich nilum einen Typ handelt AnyObject??, der äußere optional, was bedeuten würde, den Eintrag für den Schlüssel zu entfernen "foo".
Um zu setzen , den Wert für die Schlüssel "foo"auf den AnyObject?Wert nil, müssen wir in einem nicht passieren niläußeren optional, eine innere optional (vom Typ enthaltend AnyObject?) von Wert nil. Um dies zu tun, können wir es tun
let v : AnyObject? = nil
x["foo"] = v
oder
x["foo"] = nil as AnyObject?
Alles, was darauf hinweist, dass wir ein nilvon AnyObject?haben und nicht AnyObject??.
nilzu einem Schlüssel, es wird zurückkehrennilnächstes Mal , wenn Sie diesen Schlüssel zugreifen (weil es das Objekt und das entfernte Objekt entfernt ist nicht da). Wenn Sie einennilWert ungleich Null darstellen möchten , können Sie verwendenNSNull().