23
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

OptionalをUnwrapする3つの方法

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だった場合エラーが起きるからです。

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
Sign upLogin
23
Help us understand the problem. What are the problem?