Ich möchte eine Int erstellen, die keinen Wert (eine bereits vorhandene Variable) hat. Wenn ich das tue;Int ohne Wert (set int auf keinen Wert)
number = Int()
dann hat es immer noch den Wert 0
. Ich will nichts, einen nicht existenten Wert.
Ich möchte eine Int erstellen, die keinen Wert (eine bereits vorhandene Variable) hat. Wenn ich das tue;Int ohne Wert (set int auf keinen Wert)
number = Int()
dann hat es immer noch den Wert 0
. Ich will nichts, einen nicht existenten Wert.
kann jede Art tatsächlich auf einen leeren Wert aka nil
eingestellt werden!
Um eine Variable zu erstellen, die auf nil
gesetzt werden kann, müssen Sie den Typnamen explizit mit einem ?
oder !
(ich spreche später über den Unterschied) am Ende schreiben.
Zum Beispiel, wenn Sie ein Int
wollen, die nil
eingestellt werden kann, eine Variable mit dem Namen Typ deklarieren:
var myInt: Int
und fügen Sie dann ein ?
:
var myInt: Int?
Dann Sie können myInt
auf nil
setzen, oder welche Werte auch immer Sie wollen:
myInt = nil
myInt = 0
Dieser Typ-Name-mit-? Notation ist in Swift als "optionale Typen" bekannt.
Sie können nicht nur optionals in Variablen und Konstanten verwenden, können Sie es auch in Methode/Funktion Signaturen verwenden:
func myUselessFunc(value: Int?) -> Int? {
return value
}
Okay, so was ist der Unterschied zwischen !
und ?
?
!
verhält sich wie Referenztypen in Java und C#. Und ?
ist wie eine sicherere Version von !
.
Nehmen wir an, es gibt eine optionale Int
namens myInt
. Sie möchten auf die description
zugreifen.
Wenn myInt
als let myInt: Int?
erklärt wurden,
myInt?.description
Wenn myInt
erklärt wurden als let myInt: Int!
myInt.description
Beachten Sie, dass mit dem Fragezeichen, müssen Sie jedes Mal ein Fragezeichen am Ende hinzufügen Sie müssen auf Eigenschaft/Methode von myInt
zugreifen. Dies wird als "Auspacken eines optionalen Typs" bezeichnet.
Ein Typ mit dem Suffix !
wird als "implizit nicht eingeschlossener optionaler Typ" bezeichnet.Wenn Sie mit diesen Typen arbeiten, müssen Sie sie nicht auspacken. Wenn jedoch myInt
nil
ist, wird ein Fehler ausgegeben! Dies passiert nicht mit ?
Typen, weil der gesamte Ausdruck nur nil
zurückgibt, wenn myInt
nil
ist.
Das ist nur etwas, das Sie beachten sollten, wenn Sie das erste Mal mit Optionals arbeiten.
Sie benötigen ein Optional Int
. Durch das Stellen einer Frage "?" Markieren Sie das Varilable mit Null initialisieren.
var number: Int?
Siehe diesen Link für weitere Informationen https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html
Die einzige Möglichkeit ist ein optionales 'Int?' – vadian
Sie benötigen Optionals: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/ uid/TP40014097-CH5-ID330 – Moritz
'Var-Nummer: Int?' –