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

OptionalをUnwrapする3つの方法

More than 1 year has passed since last update.

Optionalとは?

Swiftの型の一つで、nilを保存できる子。値がある場合は、Optional(data)と保存されるので、
中のdataを取り出したい場合はunwrapしなければいけない。Optionalのデータとして扱われる。

なんでOptionalを使わないとあかんの?

もしかしたら何かしらの整数Intの値を持ってるかもしれないし、何の値も持っていない(nil)かもしれないからです。例えば、データベースなどからデータを読み込むときに、値が何もなかったら、Optionalがそれを取り込んでくれるので、とりあえずエラーは防げる!

Optionalを初期化する方法

2つ方法があります。

let optionalOne: Int? = Int("42") //方法1
let optionalTwo: Optional<Int> = Int("42") //方法2

print(optionalOne) // Optional(42)
print(optionalTwo) // Optional(42)

Optionalはタイプなので、そのまま使うと、Optionalタイプとして実行されます。
中身のデータタイプを覆っているので、中身にアクセスするには、Unwrap(開く)必要があります。

OptionalをUnwrapする方法

1. if-letでunwrap

let optionalString = fetchOptional()

if let unwrapped = optionalString {
    print(unwrapped)
}

func fetchOptional() -> String?{
    return array.first
}

2. guard-letでunwrapする

var someStr: String?
guard let unwrapped = someStr else { return }
Print (unwrapped)

3. forced unwrapping (強制的アンラップ)

Optionalにビックリマークをつける。

var someStr: String?
Let unwrapped3 = someStr! 

ただし、これを使うときはsomeStrの値が100%あると場合でないといけません。もし、強制的にアンラップして、値がnilだった場合エラーが起きるからです。

Saayaman
バイリンガル・デザイナー・フロントエンドです。 記事を英訳してます。Githubリンク載せてます。画像いっぱい載っけてます。
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
ユーザーは見つかりませんでした