Hallo,
ich hoffe dieses Thema entartet nicht wieder in einen Glaubenskrieg. Aber ich muss trotzdem fragen:
Optionals sind Werte die den Wert nil haben dürfen. Wenn man sich die UITextField Datei ansieht dann findet man dort folgendes:
Alles anzeigen
Hier sehen wir mehrere Instanzvariablen deren default Wert nil ist. Lese ich den text aus, dann bekomme ich einen Wert der auch, wenn das Feld leer ist, nil ist.
Aber let text definiert mir doch hier eine non-optional und hält dann nil?
In einer der WWDC 14 Folgen zu Swift wurde gesagt, dass man die Optionals entweder mit ! (forced unwrapping) oder mit if let entpacken soll, dies ist aber eine einfache Zuweisung und ich dachte mein Programm crasht gleich, aber nein es läuft und text kann den Wert nil haben. Warum? Was habe ich da übersehen?
ich hoffe dieses Thema entartet nicht wieder in einen Glaubenskrieg. Aber ich muss trotzdem fragen:
Optionals sind Werte die den Wert nil haben dürfen. Wenn man sich die UITextField Datei ansieht dann findet man dort folgendes:
Quellcode
- class UITextField : UIControl, UITextInput, UIKeyInput, UITextInputTraits, NSObjectProtocol, NSCoding {
- var text: String! // default is nil
- var attributedText: NSAttributedString! // default is nil
- var textColor: UIColor! // default is nil. use opaque black
- var font: UIFont! // default is nil. use system font 12 pt
- ... }
Hier sehen wir mehrere Instanzvariablen deren default Wert nil ist. Lese ich den text aus, dann bekomme ich einen Wert der auch, wenn das Feld leer ist, nil ist.
Aber let text definiert mir doch hier eine non-optional und hält dann nil?
In einer der WWDC 14 Folgen zu Swift wurde gesagt, dass man die Optionals entweder mit ! (forced unwrapping) oder mit if let entpacken soll, dies ist aber eine einfache Zuweisung und ich dachte mein Programm crasht gleich, aber nein es läuft und text kann den Wert nil haben. Warum? Was habe ich da übersehen?