Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
20
Help us understand the problem. What is going on with this article?
@Saayaman

OptionalをUnwrapする3つの方法

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

20
Help us understand the problem. What is going on with this article?
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
Saayaman
バイリンガル・デザイナー・フロントエンドです。 記事を英訳してます。Githubリンク載せてます。画像いっぱい載っけてます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
20
Help us understand the problem. What is going on with this article?