Cuando declaramos una Variable o Constante de Tipo Opcional, estamos indicando que podría no tener valor.
Para definir un Opcional agregaremos un signo de interrogación ? junto a la declaración del Tipo de Dato.
var edad : Int?
En este ejemplo, al declarar como Opcional la variable edad, estamos indicando que es posible que no se le asigne valor (ausencia de valor), en cuyo caso su valor será nil (nulo). En Swift ser nulo significa desconocer su valor.
Cualquier Instancia que potencialmente pueda ser nil (no tenga valor asignado) debe declararse como Opcional. Si una Instancia no se declara como Opcional, entonces estaremos seguros que va a tener valor.
Volvamos a nuestro ejemplo, veamos que pasa si no le asignamos valor a la Variable edad.
var edad : Int?
print(edad)
Como era de esperar, edad toma el valor nil.
Veamos ahora que pasa si asignamos valor a la Variable edad.
var edad : Int?
edad = 25
print(edad)
En este caso, la Variable edad toma el valor Optional(25) y además Xcode nos muestra una advertencia indicando que tenemos que desencapsular ese valor.
Llegados a este punto, nos queda claro que un Opcional o es nulo (nil) o tiene un valor válido disponible para ser utilizado.
var edad : Int?
edad = 25
print(edad)
edad = nil
print(edad)
El valor nil no puede asignarse a Variables o Constantes que no sean Opcionales.
var edad : Int
edad = nil
print(edad)
Cuando declaramos una Variable como Opcional sin asignarle ningún valor, entonces su valor por defecto es nil
var edad : Int?
print(edad)