Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Migrating to Swift 3 #kyoakiswift
Search
Takaaki Tanaka
February 08, 2017
Technology
0
2.7k
Migrating to Swift 3 #kyoakiswift
Kyobashi.swift x AKIBA.swift合同勉強会での発表資料です
#kyoakiswift
Takaaki Tanaka
February 08, 2017
Tweet
Share
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
20
7.5k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
200
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
760
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
650
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
550
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
590
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
1.7k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
250
AWS / Google Cloud / Azure それぞれの推しサービス.pdf
kongmingstrap
1
1.4k
Other Decks in Technology
See All in Technology
N=1から解き明かすAWS ソリューションアーキテクトの魅力
kiiwami
0
140
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
1
1.5k
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
230
PHPで印刷所に入稿できる名札データを作る / Generating Print-Ready Name Tag Data with PHP
tomzoh
0
140
生成 AI プロダクトを育てる技術 〜データ品質向上による継続的な価値創出の実践〜
icoxfog417
PRO
5
1.8k
Building Products in the LLM Era
ymatsuwitter
10
6.1k
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
200
Active Directory攻防
cryptopeg
PRO
7
4.4k
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
150
JEDAI Meetup! Databricks AI/BI概要
databricksjapan
0
270
IAMポリシーのAllow/Denyについて、改めて理解する
smt7174
2
140
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Documentation Writing (for coders)
carmenintech
67
4.6k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
How GitHub (no longer) Works
holman
314
140k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
How STYLIGHT went responsive
nonsquared
98
5.4k
Transcript
ɹ2017/02/08 Kyobashi.swift x AKIBA.swift ߹ಉษڧձ Migrating to Swift 3
About Me
• ాத ໌ (Takaaki Tanaka) • Ϋϥεϝιουגࣜձࣾ • iOS ΞϓϦέʔγϣϯΤϯδχΞ
• @kongmingtrap • iOS Developer (Swift / Objective-C) • GyazSquare / GitHub
ͱ͋ΔΞϓϦͷ Swift 3ରԠ
ͱ͋ΔΞϓϦ • Swift 1.1ͷࠒ͔Β࡞ΒΕ͍ͯΔΞϓϦ • ॳظόʔδϣϯiOS 7ରԠ • Swift 1.2
→ 2.1ʹରԠ • ιʔείʔυɹ250ϑΝΠϧ • ϥΠϒϥϦཧCocoaPods
ϛογϣϯ iOS 10 ʹ ରԠηϤ
iOS 10 • Xcode ͷόʔδϣϯ8Ҏ্ • iOS SDK 10ΛΈࠐΉͨΊʹ Swift
2.3ɺ Swift 3.0ରԠ͕ඞཁ
Swift 3.0 • NS Prefix͔Βͷ٫ • ৽ͨͳΔAPIσβΠϯΨΠυϥΠϯ
Swift 3.0 • NS Prefix͔Βͷ٫ → Ұ෦Γ·ͨ͠ ʢNSNumberʣ • ৽ͨͳΔAPIσβΠϯΨΠυϥΠϯ
→ طଘ ͷϥΠϒϥϦͷϝιου໊มΘΓ͗͢ • ABI҆ఆԽ → Swift 4·ͰͬͯͶ
None
None
ʊਓਓਓਓਓਓਓਓਓʊ ʼɹࢼ͞ΕΔ৺ɹʻ ʉ:?:?:?:?:?:?:?:ʉ
Swift 2.3 • Xcode 8 + iOS 10 SDKͰϏϧυ͕Մೳ •
Swift 2.x ܥͷAPIσβΠϯ • ͱΓ͋͑ͣٸ͍ͰiOS 10ͰϏϧυ͠ͳ͚Ε ͳΒͳ͍࣌ʹରԠ
Swift 2.3 9DPEF3FMFBTF/PUFT • Xcode 8.2 ͕࠷ޙͷαϙʔτʹͳΔͨΊɺ Swift 3.0ͷରԠඞਢ
Swift 3.0Ҡߦ
Swift 2.2ͷҠߦ • Xcode 7.2 + Swift 2.1 ͷ։ൃڥΛXcode 8.2
Ͱىಈͨ͠ࡍɺʮEdit > Convert > To Current Swift Syntax.ʯͷରʹTarget͕දࣔ ͞Εͳ͔ͬͨ • ͱΓ͋͑ͣɺXcode 7.3ͰSwift 2.1͔ΒSwift 2.2Ҡߦͨ͠
Migration • Xcode 8.2Ͱىಈͨ͠ࡍɺաڈͷSwift όʔ δϣϯͷ߹Convertը໘͕ىಈ͢Δ • ʮEdit > Convert
> To Current Swift Syntax.ʯ Ͱ࣮ߦՄೳ • Swift 1.1 → Swift 2.1ͷ͍࣌ͷʹͳΒͳ ͔ͬͨ
None
None
ʊਓਓਓਓਓਓਓਓਓʊ ʼɹ$POWFSU'BJMFEɹʻ ʉ:?:?:?:?:?:?:?:?:?ʉ
Migration • Xcode 8.2Ͱىಈͨ͠ࡍɺաڈͷSwift όʔδϣ ϯͷ߹Convertը໘͕ىಈ͢Δ • ʮEdit > Convert
> To Current Swift Syntax.ʯͰ ࣮ߦՄೳ • Swift 1.1 → Swift 2.1ͷ͍࣌ͷʹͳΒͳ ͔ͬͨ • Swift 2.2 → Swift 3.0ͷ͍࣌ͷʹͳΒͳ ͔ͬͨ ← New!
ͦΕͰແ͍ΑΓϚγ • UIKitͷmethodͷม • Enumͷupper case → lower caseม •
NSPrefixͷϥΠϒϥϦͷม
ͻͨ͢Βಓͳ࡞ۀ • CurryԽͨ͠ϝιουͷमਖ਼ public static func log(level level: Level)(@autoclosure name:
() -> String) (@autoclosure message: () -> String) -> String { if level.rawValue <= Logger.currentLevel.rawValue { let full = "\(level.description): \(name()) - \(message())" print(full) return full } return "" }
ͻͨ͢Βಓͳ࡞ۀ • CurryԽͨ͠ϝιουͷमਖ਼ public static func log(level: Level) -> ((@escaping
() -> String) -> ((@escaping () -> String) -> String)) { return { (name: @escaping (() -> String)) in return { (message: @escaping (() -> String)) in if level.rawValue <= Logger.currentLevel.rawValue { let full = "\(level.description): \(name())) - \(message())" print(full) return full } return "" } } }
ͻͨ͢Βಓͳ࡞ۀ • closureʹ@escapingͷՃ
ͻͨ͢Βಓͳ࡞ۀ • Ҡߦπʔϧ͕มͨ͠Օॴͷमਖ਼ Date as NSDate as Date String as
NSString as String
ͻͨ͢Βಓͳ࡞ۀ • Testͷमਖ਼
None
Recap
w Ͱ͖ΕೋͱΓͨ͘ͳ͍ w ίϯϑϦΫτղফͷͨΊɺݽಠͳ࡞ۀ ͱͳΔ w ৺Λࢼ͞ΕΔ Recap
None
͋Γ͕ͱ͏͍͟͝·ͨ͠