Upload
fumiya-sakai
View
368
Download
0
Embed Size (px)
Citation preview
Swiftでよくある”!”や”?”について~ 意外と詰まってしまった体験談含む ~
自己紹介酒井文也(さかい ふみや)
今までの仕事履歴(本業)
石川県金沢市生まれ・東京(大塚)住まいの30歳本業は某口コミサイトのRails使いです
26歳~30歳:PHP / Rubyプログラマ
23歳~25歳:Webデザイナー兼ディレクター
Objective-C歴:3month Swift歴:1month
趣味:シルバーアクセサリー集め・スイーツ作り・開発
女子向けと食べ物系コンテンツのお仕事が多い…
→ まだまだ初心者っす。。
まずは概要説明“!”や”?”って一体何者なんだい?
何のために彼らはいるの?
正式名称は以下の通り・”?” → オプショナル(Optional)型・”!” → 暗黙的開示オプショナル(Implicitly Unwrapped Optional)型
・変数にnil(扱うべき値が存在しない)が入っているものは使ってはいけない
アプリのクラッシュ防止
・nilを通常の値と誤って使うことを防ぐためのもの
こんな感じの記述を見かけませんか?・let str : String? → デフォルト値はnil・let str : String → こっちはただ単に定数の入れ物を作っただけ
”?” オプショナル型○○型らしいけど、値がなくって○○型じゃないかも…
どんな時に現れる?
nilが入っても良い
例)tableViewのセル内のラベル
セルの実体・Xcode6 beta7以降ではUITableViewCellの ほぼ全てのプロパティが影響箇所
<補足>
”!” 暗黙的開示オプショナル型nilかもしれないけど、実際にnilだと困る…
どんな時に現れる?
nilが入らないことが保証されている
例)IBOutletで作成したプロパティ
例)Objective-Cでから渡される値 ※SwiftからObjective-C
← IBOutletで配置したラベルとボタン
SwiftとObjective-Cは共存可能
(注意)nil が入った値に対して ! を適用してしまうとアプリがクラッシュする → 必ずチェックをするようにしなければならない。
実際にありうる場合はいつ?JSONやXML等の外部のAPIとの連携時
ちなみに作ったのは右のやつです
・データによってはそもそもXML要素のタグないしは、 JSONの要素がない場合だってある。
Swiftの変数にnilが入ってしまう可能性がある
・そのときに遭遇したことOptionalを編集したら、別のところでエラー
・このサンプルはXMLをUITableViewで表示するサンプルです (次回あたり解説します?)
覚えたての時ってやっぱタイミングわからん・そのときに感じたこと
では実際に遭遇したときは?慣れないうちは Xcodeのエラーメッセージにあやかる
・XCodeがある程度推測してくれるのであまり怖がらなくって大丈夫・自分も今でも結構あやかっております(汗)
一応こんな風にXcodeがヒントをくれる → NSXMLParser(contentsOfURL: feedUrl)! に修正
ざっくりというと、「“!”か”??”をつけなきゃいかんのでは」と言っている
最初は考えすぎなくてもよい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
質疑応答※なんでもOKです!(参考書籍や勉強方法等も含む)プライベートなことでも可能な限りお答えします。
前回プレゼンからのアップデート情報・前回作成しましたカレンダーサンプルにマルチデバイス対応しました
今後のプレゼン予定について・SwiftでXMLデータをUITableViewに表示してみよう
・SwiftでCoreDataを使ってみよう 概念 / サンプル / 活用・こういう見た目はどうつくるの?よくある美しいUIづくり (Objective-C)
ご意見・ご要望もお気軽によろしくお願いします!