2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?