9
Swiftでよくある”!””?”について 意外と詰まってしまった体験談含む

Optional型の簡単な説明

Embed Size (px)

Citation preview

Page 1: Optional型の簡単な説明

Swiftでよくある”!”や”?”について~ 意外と詰まってしまった体験談含む ~

Page 2: Optional型の簡単な説明

自己紹介酒井文也(さかい ふみや)

今までの仕事履歴(本業)

石川県金沢市生まれ・東京(大塚)住まいの30歳本業は某口コミサイトのRails使いです

26歳~30歳:PHP / Rubyプログラマ

23歳~25歳:Webデザイナー兼ディレクター

Objective-C歴:3month Swift歴:1month

趣味:シルバーアクセサリー集め・スイーツ作り・開発

女子向けと食べ物系コンテンツのお仕事が多い…

→ まだまだ初心者っす。。

Page 3: Optional型の簡単な説明

まずは概要説明“!”や”?”って一体何者なんだい?

何のために彼らはいるの?

正式名称は以下の通り・”?” → オプショナル(Optional)型・”!” → 暗黙的開示オプショナル(Implicitly Unwrapped Optional)型

・変数にnil(扱うべき値が存在しない)が入っているものは使ってはいけない

アプリのクラッシュ防止

・nilを通常の値と誤って使うことを防ぐためのもの

こんな感じの記述を見かけませんか?・let str : String? → デフォルト値はnil・let str : String → こっちはただ単に定数の入れ物を作っただけ

Page 4: Optional型の簡単な説明

”?” オプショナル型○○型らしいけど、値がなくって○○型じゃないかも…

どんな時に現れる?

nilが入っても良い

例)tableViewのセル内のラベル

セルの実体・Xcode6 beta7以降ではUITableViewCellの  ほぼ全てのプロパティが影響箇所

<補足>

Page 5: Optional型の簡単な説明

”!” 暗黙的開示オプショナル型nilかもしれないけど、実際にnilだと困る…

どんな時に現れる?

nilが入らないことが保証されている

例)IBOutletで作成したプロパティ

例)Objective-Cでから渡される値 ※SwiftからObjective-C

← IBOutletで配置したラベルとボタン

SwiftとObjective-Cは共存可能

(注意)nil が入った値に対して ! を適用してしまうとアプリがクラッシュする → 必ずチェックをするようにしなければならない。

Page 6: Optional型の簡単な説明

実際にありうる場合はいつ?JSONやXML等の外部のAPIとの連携時

ちなみに作ったのは右のやつです

・データによってはそもそもXML要素のタグないしは、  JSONの要素がない場合だってある。

Swiftの変数にnilが入ってしまう可能性がある

・そのときに遭遇したことOptionalを編集したら、別のところでエラー

・このサンプルはXMLをUITableViewで表示するサンプルです (次回あたり解説します?)

覚えたての時ってやっぱタイミングわからん・そのときに感じたこと

Page 7: Optional型の簡単な説明

では実際に遭遇したときは?慣れないうちは Xcodeのエラーメッセージにあやかる

・XCodeがある程度推測してくれるのであまり怖がらなくって大丈夫・自分も今でも結構あやかっております(汗)

一応こんな風にXcodeがヒントをくれる → NSXMLParser(contentsOfURL: feedUrl)! に修正

ざっくりというと、「“!”か”??”をつけなきゃいかんのでは」と言っている

Page 8: Optional型の簡単な説明

最初は考えすぎなくてもよいXcodeにあやかりながら一歩一歩

http://qiita.com/bonegollira/items/d900f580e23233b7b23b

http://ja.wikipedia.org/wiki/Swift_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)

参考にしたURL

Playgroundを活用

Qiitaなどを調べて先人の考察を参考に

http://qiita.com/tottokotkd/items/931dc4319978731ac128

http://qiita.com/fuhi1983/items/b14ce976cfba486439a9

http://blog.lebe.jp/post/96959669140/swift-beta7

参考にした書籍:詳解Swift

Page 9: Optional型の簡単な説明

質疑応答※なんでもOKです!(参考書籍や勉強方法等も含む)プライベートなことでも可能な限りお答えします。

前回プレゼンからのアップデート情報・前回作成しましたカレンダーサンプルにマルチデバイス対応しました

今後のプレゼン予定について・SwiftでXMLデータをUITableViewに表示してみよう

・SwiftでCoreDataを使ってみよう 概念 / サンプル / 活用・こういう見た目はどうつくるの?よくある美しいUIづくり (Objective-C)

ご意見・ご要望もお気軽によろしくお願いします!