Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 27 Ad

More Related Content

Advertisement

Recently uploaded (20)

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

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

×