Optionalとは?
Swiftの型の一つで、nilを保存できる子。値がある場合は、Optional(data)と保存されるので、
中のdataを取り出したい場合はunwrapしなければいけない。Optionalのデータとして扱われる。
なんでOptionalを使わないとあかんの?
もしかしたら何かしらの整数Intの値を持ってるかもしれないし、何の値も持っていない(nil)かもしれないからです。例えば、データベースなどからデータを読み込むときに、値が何もなかったら、Optionalがそれを取り込んでくれるので、とりあえずエラーは防げる!
Optionalを初期化する方法
2つ方法があります。
.swift
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
.swift
let optionalString = fetchOptional()
if let unwrapped = optionalString {
print(unwrapped)
}
func fetchOptional() -> String?{
return array.first
}
2. guard-letでunwrapする
.swift
var someStr: String?
guard let unwrapped = someStr else { return }
Print (unwrapped)
3. forced unwrapping (強制的アンラップ)
Optionalにビックリマークをつける。
var someStr: String?
Let unwrapped3 = someStr!
ただし、これを使うときはsomeStrの値が100%あると場合でないといけません。もし、強制的にアンラップして、値がnilだった場合エラーが起きるからです。