0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Swift入門】オプショナル整数型の「?」や「!」について、整理してみた

Posted at

##1. コードを接続した際に自動的に追加されたコードを一つずつ紐解く

ViewController.swift
// ---(略)---
@IBOutlet weak var label: UILabel!
// ---(略)---

###1-1. @IBOutlet
@IBOutletは、変数labelがプロパティとしてストーリーボードと接続できることを表している。

###1-2. weak
weakは、メモリ管理の設定。

###1-3. var label
var labelは、varキーワードを用いて、変数labelを宣言している。

###1-4. 「:」の後のUILabel
「:」の後のUILabelは、変数labelの型がUILabelクラスであることを表す。

###1-5. !
キーワードは「オプショナル」。2. につづく。

##2. オプショナル整数型(= nilを取り得る整数型)について

###2-1. オプショナル整数型とは?

nil__を変数に代入する場合は、下記のように型を明示することが必要。そして、型の後に「?__」を付ける。

example
var age:Int? = nil

このInt?は、__オプショナル整数型(= nilを取り得る整数型)__と呼ばれる。

###2-2. オプショナル整数型を使った計算
####2-2-1. 問題点

// オプショナル整数型と整数型は型が異なるため、エラーが返る
var age:Int? = 25
print(age + 1)

↓↓↓

####2-2-2. 解決策
変数名の後に「!」を書く。このように指定することで、オプショナル整数型の値が格納されている変数の中から、整数値のみを取り出すことができる。

// 「オプショナル整数型」の変数から整数を取り出す
var age:Int? = 25
print(age! + 1)

####2-2-3. 注意点
変数ageにnilが代入されているときに「!」をつけると、アプリがクラッシュするので注意。

// nilが代入されている変数から値を取り出すと、アプリがクラッシュ
var age:Int? = nil
print(age! + 1)

####★ つまり
オプショナル型の変数から値を取り出すときに「!」を付けることで、__変数の中身がnilでない__ことを宣言していることになる。

##3. オプショナル整数型のメリット:きちんとエラーが表示されるようにして、謎のクラッシュ防ぐ

####3-1.NG例

Swiftのチェックは通るは、アプリがクラッシュする
var age:Int = nil
print(age + 1)

####3-2. OK例

型が異なるため、Swiftのチェックできちんとエラーが表示される
var age:Int? = nil
print(age + 1)

##4. 「!」を省略した書き方

###4-1. 省略前

「!」を省略する前
var age:Int? = nil
print(age! + 1)

###4-2. 省略後

「!」を省略したあと
var age:Int! = nil
print(age + 1)

=> 4-1.4-2. は、同じ働きをするが、4-2.の方がシンプルに書くことができる。

##5. まとめ

ViewController.swift
// ---(略)---
@IBOutlet weak var label: UILabel!
// ---(略)---

つまり、下記のUILabel!は、labelプロパティから値を取り出すときに「!」を書くのを省略するための書き方。labelプロパティは、これ以降、プロパティのあとに「!」を付けることなく値を取り出すことができる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?