Swift Language Tipi di Optionals

Esempio

Gli optionals sono un tipo enum generico che funge da wrapper. Questo wrapper consente a una variabile di avere uno o due stati: il valore del tipo definito dall'utente o nil , che rappresenta l'assenza di un valore.

Questa capacità è particolarmente importante in Swift perché uno degli obiettivi di design dichiarati della lingua è quello di funzionare bene con i framework di Apple. Molti (molti) framework di Apple utilizzano nil causa della sua facilità d'uso e significato per i pattern di programmazione e il design delle API all'interno di Objective-C.

In Swift, affinché una variabile abbia un valore nil , deve essere facoltativa. Gli optionals possono essere creati aggiungendo a ! o un ? al tipo di variabile. Ad esempio, per rendere un Int opzionale, è possibile utilizzare

var numberOne: Int! = nil
var numberTwo: Int? = nil

? le opzioni devono essere esplicitamente scartate e dovrebbero essere utilizzate se non si è certi che la variabile abbia o meno un valore quando si accede ad essa. Ad esempio, quando si trasforma una stringa in un Int , il risultato è un Int? opzionale Int? , perché nil verrà restituito se la stringa non è un numero valido

let str1 = "42"
let num1: Int? = Int(str1) // 42

let str2 = "Hello, World!"
let num2: Int? = Int(str2) // nil

! le opzioni vengono scartate automaticamente e dovrebbero essere utilizzate solo quando si è certi che la variabile avrà un valore quando ci si accede. Ad esempio, un UIButton! globale UIButton! variabile inizializzata in viewDidLoad()

//myButton will not be accessed until viewDidLoad is called,
//so a ! optional can be used here
var myButton: UIButton!

override func viewDidLoad(){
    self.myButton = UIButton(frame: self.view.frame)
    self.myButton.backgroundColor = UIColor.redColor()
    self.view.addSubview(self.myButton)
}