LoginSignup
59
51

More than 5 years have passed since last update.

Swiftのnil判定

Last updated at Posted at 2015-02-05

nilとOptional

SwiftにはOptionalという概念が存在し、変数がnilを許容出来るかどうかを設定することができる。

var hoge:String? = nil   //OK
var hoge = nil           //error
var hoge:String = nil   // error

具体的な設定方法としては変数の型に?を付けるか、as? Stringの様にキャスト時に設定することが出来ます。

なのでOptionalとして宣言した変数に関してはnilになる可能性があるため、引数がOptionalを許容しない場合(引数にhogeを利用したい場合など)はnilの判定が必要になります。

nil判定に関して

Optionalでnil判定が必要な場合とそうでない場合

呼び出し元のオブジェクトがOptional型の場合わざわざnil判定を行う必要はありません。以下の場合など。

hoge?.action()

この場合hogeがnilだった場合はaction()は実行されず、この行は無視されます。
また、返り値が存在するメソッドの場合は、nilが返り値と鳴ります。

一方で、Optionalが許容されない場合はnil判定を行う必要があるため、以下の手法でhogeがnilかどうかを判定します。

ObjCでのnil判定

ObjCのnil判定は非常にシンプルです

UIView* hoge = [UIView alloc]init];
if (hoge) {
  [self addSubView:hoge];
}

if (hoge != nil) {
    [self addSubView:hoge];
}

Swiftでのnil判定

一方でSwiftではif let構文を利用し、hogeがhogehogeに代入出来た場合のみifスコープに突入します。

let hoge = UIView()

if let hogehoge = hoge { // if let hoge = hogeでも可
  self.addSubView(hogehoge) //OK
}

if hoge != nil {
    self.addSubView(hoge!) //OK
}

//この書き方はswiftでは出来ない
if hoge { 
    self.addSubView(hoge!) 
}

間違ってたらご指摘お願いします。

59
51
6

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
59
51