Help us understand the problem. What is going on with this article?

オプショナルの取り扱いについて

More than 5 years have passed since last update.

Swiftを学習する上で、1にも2にもついてまわるのが、オプショナルです。

Swiftでは、極力nilにアクセスしないように設計がなされています。

オプショナル束縛構文

オプショナルを利用する際、中身がnilかどうか判断してから処理を行いたい場合が頻出します。

その場合、下記のようにオプショナル束縛構文を利用すると非常に便利です。

let heisei: Int? = "27".toInt()
if let h = heisei {
    // -> 27
    println(h)
} else {
    println("error")
}

上記の例だと、heiseiの値がnil以外の場合は条件は真となり、hにInt値が格納されます。

逆に、nilの場合は条件は偽となります。

オプショナルチェーン

オプショナルチェーンを利用すると、階層構造をもつオブジェクトをnil評価する際、大変便利です。

if let typeName: String = dorayaki?.an?.typeName {
    // -> "うぐいす"
    println(typeName)
} else {
    println("error")
}

上記の例だと、typeNameの値がとれた場合は結果が真となります。

逆に、dorayakiantypeNameのいずれかがnilの場合、偽を返却します。

また、評価の途中でnilだと判定された場合、以降の評価は打ち切られ結果として偽を返します。

オプショナルを積極的に利用して、nilとサヨナラしたいですね。

学習に利用した本

前回紹介し忘れましたが、下記の本を参考に学習しました。

Swiftの仕様は、まだまだ変更がありますが、下記をベースに学習していれば間違いないと思います。

詳解Swift

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした