Soumettre la recherche
Mettre en ligne
オプショナル型。 〜 なんとなく付ける ! ? 撲滅
•
50 j'aime
•
31,346 vues
Tomoki Hasegawa
Suivre
2014/10/18の「iOS 8/Swift エンジニア勉強会」のLT資料です。
Lire moins
Lire la suite
Logiciels
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 38
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
20130518 アラビア語を入力してみよう
20130518 アラビア語を入力してみよう
Ryo Nagai
「var禁止」禁止
「var禁止」禁止
Ryota Murohoshi
ぼくがかんがえたさいきょうのどろいどくん Hachioji.pm #10
ぼくがかんがえたさいきょうのどろいどくん Hachioji.pm #10
Hon Dallica
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした
Hiromichi Yamada
20190910 rpalt
20190910 rpalt
Hironari Ono
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips まで
Yuki Tanabe
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
Hiramatsu Ryosuke
iOS 8/Swift エンジニア勉強会@ヤフー
iOS 8/Swift エンジニア勉強会@ヤフー
大介 束田
Recommandé
20130518 アラビア語を入力してみよう
20130518 アラビア語を入力してみよう
Ryo Nagai
「var禁止」禁止
「var禁止」禁止
Ryota Murohoshi
ぼくがかんがえたさいきょうのどろいどくん Hachioji.pm #10
ぼくがかんがえたさいきょうのどろいどくん Hachioji.pm #10
Hon Dallica
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした
Hiromichi Yamada
20190910 rpalt
20190910 rpalt
Hironari Ono
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips まで
Yuki Tanabe
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
Hiramatsu Ryosuke
iOS 8/Swift エンジニア勉強会@ヤフー
iOS 8/Swift エンジニア勉強会@ヤフー
大介 束田
Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
iOS8勉強会@Yahoo! JAPAN "Document Provider"
iOS8勉強会@Yahoo! JAPAN "Document Provider"
智也 大西
Ios8yahoo swift-json
Ios8yahoo swift-json
dankogai
SwiftでSioriを開発した体験記
SwiftでSioriを開発した体験記
yohei sugigami
大人のHomekit
大人のHomekit
Ken Haneda
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数
Taketo Sano
既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo
Yahoo!デベロッパーネットワーク
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
niwatako
Reading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulator
Tomoki Hasegawa
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Tomoki Hasegawa
とある受託ベンダの開発環境
とある受託ベンダの開発環境
Tomoki Hasegawa
iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016
Tomoki Hasegawa
エンジニアのお祭り
エンジニアのお祭り
Tomoki Hasegawa
勉強会のこちら側とあちら側
勉強会のこちら側とあちら側
Tomoki Hasegawa
tvOSでWebSocketを使う
tvOSでWebSocketを使う
Tomoki Hasegawa
「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side
Tomoki Hasegawa
tvOSネイティブアプリを作る
tvOSネイティブアプリを作る
Tomoki Hasegawa
「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた
Tomoki Hasegawa
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
TestFlightみたいなのを自作する
TestFlightみたいなのを自作する
Tomoki Hasegawa
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知する
Tomoki Hasegawa
Stargazer Meetup #1
Stargazer Meetup #1
Tomoki Hasegawa
Contenu connexe
En vedette
Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
iOS8勉強会@Yahoo! JAPAN "Document Provider"
iOS8勉強会@Yahoo! JAPAN "Document Provider"
智也 大西
Ios8yahoo swift-json
Ios8yahoo swift-json
dankogai
SwiftでSioriを開発した体験記
SwiftでSioriを開発した体験記
yohei sugigami
大人のHomekit
大人のHomekit
Ken Haneda
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数
Taketo Sano
既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo
Yahoo!デベロッパーネットワーク
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
niwatako
En vedette
(8)
Xcode 6の新機能
Xcode 6の新機能
iOS8勉強会@Yahoo! JAPAN "Document Provider"
iOS8勉強会@Yahoo! JAPAN "Document Provider"
Ios8yahoo swift-json
Ios8yahoo swift-json
SwiftでSioriを開発した体験記
SwiftでSioriを開発した体験記
大人のHomekit
大人のHomekit
虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数
既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
Plus de Tomoki Hasegawa
Reading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulator
Tomoki Hasegawa
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Tomoki Hasegawa
とある受託ベンダの開発環境
とある受託ベンダの開発環境
Tomoki Hasegawa
iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016
Tomoki Hasegawa
エンジニアのお祭り
エンジニアのお祭り
Tomoki Hasegawa
勉強会のこちら側とあちら側
勉強会のこちら側とあちら側
Tomoki Hasegawa
tvOSでWebSocketを使う
tvOSでWebSocketを使う
Tomoki Hasegawa
「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side
Tomoki Hasegawa
tvOSネイティブアプリを作る
tvOSネイティブアプリを作る
Tomoki Hasegawa
「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた
Tomoki Hasegawa
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
TestFlightみたいなのを自作する
TestFlightみたいなのを自作する
Tomoki Hasegawa
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知する
Tomoki Hasegawa
Stargazer Meetup #1
Stargazer Meetup #1
Tomoki Hasegawa
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作った
Tomoki Hasegawa
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
Tomoki Hasegawa
CakePHP3ウォークスルー
CakePHP3ウォークスルー
Tomoki Hasegawa
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
Tomoki Hasegawa
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
Tomoki Hasegawa
PHPerのためのSwift入門
PHPerのためのSwift入門
Tomoki Hasegawa
Plus de Tomoki Hasegawa
(20)
Reading php terminal-gameboy-emulator
Reading php terminal-gameboy-emulator
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
とある受託ベンダの開発環境
とある受託ベンダの開発環境
iOS Developers Conference Japan 2016
iOS Developers Conference Japan 2016
エンジニアのお祭り
エンジニアのお祭り
勉強会のこちら側とあちら側
勉強会のこちら側とあちら側
tvOSでWebSocketを使う
tvOSでWebSocketを使う
「これを買っている人はこれも買っています」実装してみた PHP side
「これを買っている人はこれも買っています」実装してみた PHP side
tvOSネイティブアプリを作る
tvOSネイティブアプリを作る
「これを買っている人はこれも買っています」実装してみた
「これを買っている人はこれも買っています」実装してみた
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
TestFlightみたいなのを自作する
TestFlightみたいなのを自作する
PHPでスマホアプリにプッシュ通知する
PHPでスマホアプリにプッシュ通知する
Stargazer Meetup #1
Stargazer Meetup #1
PUSH通知証明書作成ツールを作った
PUSH通知証明書作成ツールを作った
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
CakePHP3ウォークスルー
CakePHP3ウォークスルー
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
PHPerのためのSwift入門
PHPerのためのSwift入門
オプショナル型。 〜 なんとなく付ける ! ? 撲滅
1.
オプショナル型。 なんとなく付ける !
? 撲滅 デジタルサーカス(株)⻑⾧長⾕谷川智希
2.
⾃自⼰己紹介 ともき ・⻑⾧長⾕谷川智希
/ デジタルサーカス(株) 副団⻑⾧長CTO ! ・開発系趣味: iOSアプリ開発, Web開発 ・その他趣味: レンタルカート, 電⼦子⼯工作(mbed), … Twitter Yo Beer?! @tomzoh TOMZOH TOMZOH
3.
⾃自⼰己紹介 ともき ・⻑⾧長⾕谷川智希
/ デジタルサーカス(株) 副団⻑⾧長CTO 新! 卒13年年⽬目 ・開発系趣味: iOSアプリ開発, Web開発 ・その他趣味: レンタルカート, 電⼦子⼯工作(mbed), … Twitter Yo Beer?! @tomzoh TOMZOH TOMZOH
4.
著書 2012 2013
2014 iOS 執筆中 Twitter: @tomzoh Yo: TOMZOH Beer?!: TOMZOH
5.
デジタルサーカス(株) ・Webサイト受託開発 ・スマホアプリ受託開発
・⾃自社サービス (PHP, CakePHP, Drupal) (iOS, Android) (http://appbuilder.jp) Twitter: @tomzoh Yo: TOMZOH Beer?!: TOMZOH
6.
Twitter: @tomzoh Yo:
TOMZOH Beer?!: TOMZOH
7.
今⽇日のテーマ: Swiftの 「Optional型。」
8.
Swift の String型
9.
Swift の String型には
nil は⼊入らない。 メソッドの返値とかでnilを返したいことってちょくちょくある…。
10.
Swift の String型には
nil は⼊入らない。 メソッドの返値とかでnilを返したいことってちょくちょくある…。 「nilを⼊入れたい場合、?を付ける。」
11.
Swift の String型には
nil は⼊入らない。 メソッドの返値とかでnilを返したいことってちょくちょくある…。 「nilを⼊入れたい場合、?を付ける。」
12.
nilを⼊入れたい場合、Optional<String>型を使う。
13.
nilを⼊入れたい場合、Optional<String>型を使う。 String?は…
14.
nilを⼊入れたい場合、Optional<String>型を使う。 String?は… Optional<String>の省省略略形!
15.
変数にnilが⼊入った! そしたらその変数を使うよ!
16.
Optional<String>型はそのままではString型としては使えない 元の型(String型)として使うために…
17.
Optional<String>型はそのままではString型としては使えない 元の型(String型)として使うために… _⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人_
> アンラップする!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
18.
アンラップ ・Optional型で「ラップした」変数を元の型として使える様にす る処理理。
・⽅方法は4つある。 ・Forced Unwrapping ・Optional Chaining ・Optional Binding ・Implicitly Unwrapped Optional
19.
Forced Unwrapping ・強制的にアンラップして元の型を取り出す。
・変数名の後ろに「 ! 」を付ける。 ・Forced Unwrappingしたものは元の型になっている。 ・nilに対してForced Unwrappingすると実⾏行行時エラーになる。
20.
アンラップの⽅方法 ・Forced Unwrapping
強制的にアンラップして元の型を取り出す。 ・Optional Chaining ! ・Optional Binding ! ・Implicitly Unwrapped Optional
21.
Optional Chaining ・元の型のメソッドや添字を使える様にする。
・変数名の後ろに「 ? 」を付ける。 ・結果もOptional型で返される。(Chaining) ・変数がnilの場合そのアクセスは無視される。
22.
Optional Chaining ・結果もOptional型で返される。(Chaining)
・変数がnilの場合そのアクセスは無視される。 ・Optional ChainingしたものはやっぱりOptional型。
23.
アンラップの⽅方法 ・Forced Unwrapping
強制的にアンラップして元の型を取り出す。 ・Optional Chaining 元の型のメソッドや添字を使える様にする。 ・Optional Binding ! ・Implicitly Unwrapped Optional
24.
Optional Binding ・nilチェックをしてnilでなければ元の型を取り出す。
・let でも var でもOK。 ・unwrapped は String 型。 ・str が nil の場合は if の条件式の評価が false になる。 ・頻出構⽂文。
25.
アンラップの⽅方法 ・Forced Unwrapping
強制的にアンラップして元の型を取り出す。 ・Optional Chaining 元の型のメソッドや添字を使える様にする。 ・Optional Binding nilチェックをしてnilでなければ元の型を取り出す。 ・Implicitly Unwrapped Optional
26.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 ・このアンラップはForced Unwrapping。 ・nilの時に使⽤用されると実⾏行行時エラーになる。(=⾃自動的にアンラップ) ・取扱注意。
27.
アンラップの⽅方法 ・Forced Unwrapping
・強制的にアンラップして元の型を取り出す。 ・Optional Chaining ・元の型のメソッドや添字を使える様にする。 ・Optional Binding ・nilチェックをしてnilでなければ元の型を取り出す。 ・Implicitly Unwrapped Optional 使⽤用時に⾃自動的にアンラップされて元の型になる。
28.
ところで…
29.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 ・このアンラップはForced Unwrapping。 ・nilの時に使⽤用されると実⾏行行時エラーになる。(=⾃自動的にアンラップ) ・取扱注意。
30.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 ・このアンラップはForced Unwrapping。 ・nilの時に使⽤用されると実⾏行行時エラーになる。(=⾃自動的にアンラップ) ・取扱注意。
31.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 _⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人_ > ⻑⾧長い!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
32.
省省略略形
33.
Optional型 - シンタックスシュガー
・省省略略形、シンタックスシュガー。
34.
Optional型 - シンタックスシュガー
・省省略略形、シンタックスシュガー。 ・アンラップに使う「 ? 」や「 ! 」とは別物。混同すると⼤大混乱。 ・世の中の混乱は⼤大抵この混同から発⽣生していると思う。 ・⾃自分もそうだった。 ・「 ? 」や「 ! 」を⾒見見たらどっちなのか考えて読もう。
35.
まとめ ・SwiftのString型(やInt型やBool型や…)はnilを値として取らない。 ・nilを扱いたい場合Optional型やImplicitly
Unwrapped Optional型 を使う。 ・省省略略形として元の型の名前の後ろに「 ? 」や「 ! 」を付けて表現できる。 ・Optional型を元の型として使うためには「アンラップ」する。 ・アンラップは末尾に「 ? 」「 ! 」を付けてその⽅方法を表現する。 ・Optional型の省省略略形としての「 ? 」「 ! 」とアンラップ⽅方法を表現する 「 ? 」「 ! 」は別物。
36.
オプショナル型 完全理理解!
37.
Happy Swifting!
38.
ありがとうございました。 @tomzoh
Télécharger maintenant