狠狠撸

狠狠撸Share a Scribd company logo
Optionalの使い方
株式会社ネクスト 成田元輝
第1回 Swift勉強会@ネクスト
自己紹介
? 成田元輝 @mo_to_44
? 個人でiPhoneアプリを開発
? 2014年5月 株式会社ネクスト入社iOS開
発グループで働き始める HOME Sアプリ
担当しています
? まさかのSwift発表に困惑した1週間
翱辫迟颈辞苍补濒とは
The Swift Programming Language
“Swift is a type safe language”
翱辫迟颈辞苍补濒とは
The Swift Programming Language
“Optionals are an example of
the fact that Swift is a type
safe language”
翱辫迟颈辞苍补濒とは
Swiftでは通常の型にnilの代入はできない
var someValue: Int = nil
翱辫迟颈辞苍补濒とは
Swiftでは通常の型にnilの代入はできない
var someValue: Int = nil
翱辫迟颈辞苍补濒とは
Optionalを指定するとnilの代入が可能になる
var someValue: Int? = nil
翱辫迟颈辞苍补濒とは
Optionalを指定するとnilの代入が可能になる
var someValue: Int? = nil
翱辫迟颈辞苍补濒とは
Optionalを指定するとnilの代入が可能になる
var someValue: Int? //nil!
!
※Optional型に初期値を設定しない場合、自動的にnilになる
翱辫迟颈辞苍补濒とは
値が入らないかもしれない=nilとなる可能性のあ
る変数は、宣言時に”?”をつけてOptional型とする
!
Optionalは値が入るかもしれないし、入らないか
もしれない、“オプション”の変数に使用する
!
翱辫迟颈辞苍补濒とは
Forced Unwrapping
Optional型の変数を通常の型の変数に代入
することは可能?
Forced Unwrapping
var number: Int? = 42!
var newNumber: Int = number
Optional型の変数を通常の型の変数に代入
することは可能?
Forced Unwrapping
var number: Int? = 42!
var newNumber: Int = number
Optional型の変数を通常の型の変数に代入
することは可能?
Forced Unwrapping
var number: Int? = 42!
var newNumber: Int = number
Optional型の変数にはnilが入っている可能性がある
Forced Unwrapping
Optional型のUnwrapping=解除を行う
Optional型の変数に”!”をつける
var number: Int? = 42!
var newNumber: Int = number!
Optional型のUnwrapping=解除を行う
Optional型の変数に”!”をつける
Forced Unwrapping
var number: Int? = 42!
var newNumber: Int = number!
ただし!
Forced Unwrapping
var number: Int? = nil!
var newNumber: Int = number!
Unwrappingした変数がnilだった場合、
ランタイムエラーとなる
Forced Unwrapping
var number: Int? = nil!
var newNumber: Int = number!
Unwrappingした変数がnilだった場合、
ランタイムエラーとなる
コンパイラによる型チェックが行われず、せっかくの
Type SafetyなSwiftの言語仕様を台無しにしてしまう
Forced Unwrapping
var number: Int? = nil!
var newNumber: Int!
!
if number {!
newNumber = number!!
}else{!
println("There isn't value")!
}
“!”を使ってUnwrappingする際は、if文でnilの
チェックをしましょう
Optional Binding
Optional Binding
var number: Int? = 42!
var newNumber: Int!
!
if let validNumber = number {!
newNumber = validNumber!
}else{!
println("There isn't value")!
}
nilチェックを行いながら、一時的な変数、定数を使用する
Optional Binding
var number: Int? = 42!
var newNumber: Int!
!
if let validNumber = number {!
newNumber = validNumber!
}else{!
println("There isn't value")!
}
nilチェックを行いながら、一時的な変数、定数を使用する
Optional Binding
var number: Int? = nil!
var newNumber: Int!
!
if let validNumber = number {!
newNumber = validNumber!
}else{!
println("There isn't value")!
}
nilチェックを行いながら、一時的な変数、定数を使用する
まとめ
まとめ
? 値が入らない可能性のある変数は”?”をつけて
Optionalにする必要がある
? ”!”を使ったForced Unwrappingはコンパイラに
よるチェックが効かなくなり、さらにランタイム
エラーになる可能性もあるのでなるべく使わない
方が良さそう
? Optionalな変数はif文+”!”、あるいはOptional
Bindingでnilチェックをしてから使用しましょう
ご清聴ありがとうございました

More Related Content

Optionalの使い方 第1回 Swift勉強会@ネクスト