Posted at

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