オプショナルは、空の状態を持てる変数だ。空はnilで表せる。
変数宣言の型の後に?を付ける

var hoge:Int?
hoge = nil

var hoge2:Int
hoge2 = nil       // エラーになる。

オプショナルをそのまま使うとエラーになる。nilかどうかチェックしてnilでなければ変数に!をつけて値にアクセスできる。

var hogeOpt:Int? = 10

if hogeOpt != nil {
    println(hogeOpt!)     // 10が表示される
}

またこう言うふうにも書ける。オプショナルバインディングって言う。

var hogeOpt:Int? = 10

if let hoge = hogeOpt {
    println(hoge)     // 10が表示される
}

また、複数のオプショナルで上記のような処理を行うには、,で複数個指定する。

var hogeOpt1:Int? = 10
var hogeOpt2:Int? = 20

if let hoge1 = hogeOpt1, let hoge2 = hogeOpt2 {
    println("hoge1=\(hoge1), hoge2=\(hoge2)")   // "hoge1=10, hoge2=20"と表示
}

hogeOpt1、hogeOpt2どちらかがnilなら、falseになり表示されない。