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
iOS APP Development - Swift3 Intro
Search
Ryan Chung
October 28, 2016
Technology
0
81
iOS APP Development - Swift3 Intro
http://MobileDev.TW
Ryan Chung
October 28, 2016
Tweet
Share
More Decks by Ryan Chung
See All by Ryan Chung
MovieBot Development
ryan403
0
280
Design Voice-First Games for Alexa
ryan403
0
40
AI Teaching Talk
ryan403
0
100
Cognitive Service
ryan403
0
84
jQuery & API Practices
ryan403
0
110
CSS Practices
ryan403
1
130
JavaScript Practices
ryan403
0
85
Web Programming - Lesson 6
ryan403
1
570
Web Programming - Lesson 7
ryan403
1
590
Other Decks in Technology
See All in Technology
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
100
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
150
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
160
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
240
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
podman_update_2024-12
orimanabu
1
260
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
520
Qiita埋め込み用スライド
naoki_0531
0
1.3k
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
How STYLIGHT went responsive
nonsquared
95
5.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
Rails Girls Zürich Keynote
gr2m
94
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Transcript
http://MobileDev.TW Swift Programming iOS APP Developer Swift 語法入門
[email protected]
1
http://MobileDev.TW Swift Programming Swift • 支援playground,可快速測試 • 效能最佳化 •
可以從Hello World到甚至作業系統都可開發 2
http://MobileDev.TW Swift Programming 大綱 1. Hello Swift! Xcode環境認識 2.
變數與常數 3. 陣列與字典 4. 控制流程 5. 函數 6. 物件與類別 3
http://MobileDev.TW Swift Programming 1.Hello Swift! Xcode環境認識 4
http://MobileDev.TW Swift Programming 1.選擇Create a new Xcode project 5
http://MobileDev.TW Swift Programming 2.選擇macOS->Command Line Tool 6
http://MobileDev.TW Swift Programming Xcode的樣板專案分類介紹 7
http://MobileDev.TW Swift Programming 3.輸入專案名稱,語言選Swift,存檔 8
http://MobileDev.TW Swift Programming 4.執行應用程式 9
http://MobileDev.TW Swift Programming 重點理解 1. main.swift是程式的進入點 2. Import匯入基本程式所需的Framework 3.
利用print來輸出資訊於console 10
http://MobileDev.TW Swift Programming What is print? 游標放在print上,按下alt,看到問號後按下滑鼠左鍵 11
http://MobileDev.TW Swift Programming 任務:輸出相加結果 12
http://MobileDev.TW Swift Programming 變數/常數宣告 你會不會變… 13
http://MobileDev.TW Swift Programming 變數與常數 • let:宣告常數 • 很多地方要用且不會改變,只指定值一次 •
var:宣告變數 14
http://MobileDev.TW Swift Programming 指定變數/常數的資料型態 • 常數/變數名稱 : 資料型態 •
可先宣告再給值 或 直接給值 15
http://MobileDev.TW Swift Programming Convert value to different type 16
http://MobileDev.TW Swift Programming Type conversion in string (string interpolation)
17
http://MobileDev.TW Swift Programming 常數/變數也可先做運算 18
http://MobileDev.TW Swift Programming 多種型態一起輸出 19
http://MobileDev.TW Swift Programming 字串相加 20
http://MobileDev.TW Swift Programming 註解 • 單行: // • 多行:
/* …… */ 21
http://MobileDev.TW Swift Programming 陣列與字典 Array & Dictionary 22
http://MobileDev.TW Swift Programming 字典 Dictionary 23
http://MobileDev.TW Swift Programming 改變字典某項目的值 24
http://MobileDev.TW Swift Programming 建立一個空的字典 25
http://MobileDev.TW Swift Programming 字典取值 26
http://MobileDev.TW Swift Programming 陣列取值 27
http://MobileDev.TW Swift Programming 建立一個空的陣列 28
http://MobileDev.TW Swift Programming 大量調整陣列 29
http://MobileDev.TW Swift Programming 陣列排序 順著排 30 倒著排
http://MobileDev.TW Swift Programming You should got it NOW •
Xcode可以製作哪些種類的應用程式 • 如何查閱進一步解釋 • 如何跳至匯入程式碼的原始位置 • 如何使用print顯示變數的值 • 變數與常數該如何宣告 • 陣列與字典是什麼?要如何存取? 31
http://MobileDev.TW Swift Programming 控制流程 重複的工作請電腦幫你完成 32
http://MobileDev.TW Swift Programming 控制流程 • if • switch •
for-in • for • while • repeat-while 33
http://MobileDev.TW Swift Programming 計算優秀與不及格的數量 34
http://MobileDev.TW Swift Programming Optional Value 你若是不在了,我會… 35
http://MobileDev.TW Swift Programming Optional Value • 標示出可能為空值的風險 • 標示方式:?
問號 36
http://MobileDev.TW Swift Programming 如果有值才…的寫法 if let 37
http://MobileDev.TW Swift Programming Why Swift need optional? 1. 有些情況會讓方法本身無法回傳值
• var x="ABC".toInt() 2. 有些物件建構時,還沒有辦法決定某個屬性值 • 畫面上的按鈕要在哪裡 38
http://MobileDev.TW Swift Programming 安全地處理有值與無值的狀況 將 x可能的兩種情況分開處理 39
http://MobileDev.TW Swift Programming if不用括號,但是一定要是判斷式或布林值 在Swift中,if後面一定要接判斷式或是布林值 40
http://MobileDev.TW Swift Programming Swift 3 不能用 ++ 在Swift中,if後面一定要接判斷式或是布林值 41
http://MobileDev.TW Swift Programming 很確定有值的情況,驚嘆號解開! 42
http://MobileDev.TW Swift Programming Optional Chaining 問號除了用在宣告外,也可以繼續跟著變數走,持續 為optional type 43
http://MobileDev.TW Swift Programming as? 與as! • as? • 轉換型態但維持是optional,所以還是需要搭配if
let 比較保險 • as! • 強制轉換型態,並且解開 44
http://MobileDev.TW Swift Programming Switch..Case • 支援資料型態更廣泛 • 可多個狀況合併在一起(逗號分開) •
可使用判斷式 • 不用寫break,對應到執行完case就離開 • default一定要寫 45
http://MobileDev.TW Swift Programming Switch..Case 多種狀況對應用逗號隔開 46
http://MobileDev.TW Swift Programming Switch..Case 可使用判斷式 47
http://MobileDev.TW Swift Programming Switch..Case 如果沒寫default會出什麼錯? 48
http://MobileDev.TW Swift Programming 任務 請電腦幫我印出 1 ~ 10 49
http://MobileDev.TW Swift Programming For迴圈 50
http://MobileDev.TW Swift Programming 任務 抓出不及格的學生 51
http://MobileDev.TW Swift Programming for in 52
http://MobileDev.TW Swift Programming 任務 找到女生 53
http://MobileDev.TW Swift Programming for in 54
http://MobileDev.TW Swift Programming 找到最大值 55
http://MobileDev.TW Swift Programming Lab:顯示最大值的Key值 56
http://MobileDev.TW Swift Programming while迴圈 57
http://MobileDev.TW Swift Programming 任務:repeat…while • 當我們跟別人說話時,有些時候別人沒有聽到,所 以我們會重複說一次,直到對方聽到為止 • 請用程式模擬,亂數決定對方有沒有聽到,並印出
對對方說的話 58
http://MobileDev.TW Swift Programming Function 函數 這個箱子有進有出,為了特定功能而存在著 59
http://MobileDev.TW Swift Programming 最基本的函數:0進0出 • 關鍵字:func 60
http://MobileDev.TW Swift Programming 有產出的函數:0進1出 • ->傳回值資料型態 61
http://MobileDev.TW Swift Programming 有輸入有產出的函數:1進1出 • 傳入變數名稱:變數資料型態 62
http://MobileDev.TW Swift Programming 多輸入有產出的函數:2進1出 • 多個輸入變數用逗號隔開 63
http://MobileDev.TW Swift Programming 多產出的函數:1進3出 • 多個輸出變數用逗號隔開,取值透過點運算子 64
http://MobileDev.TW Swift Programming 不定量的多變數輸入 65
http://MobileDev.TW Swift Programming Lab:改寫上個範例,計算平均 66
http://MobileDev.TW Swift Programming 物件與類別 Object & Class 67
http://MobileDev.TW Swift Programming 從一個簡單的分數開始 68
http://MobileDev.TW Swift Programming 目前我們透過直接給值來顯示分數 指定固定的分子與分母 69
http://MobileDev.TW Swift Programming 顯示一個分數 70
http://MobileDev.TW Swift Programming 現在我們希望蓋一間工廠,給它分子 與分母,它就產生分數給我們 類別的初體驗 71
http://MobileDev.TW Swift Programming 建立類別 • 建立一個運算分數的類別 • 裡面有分子、分母 •
有輸入分子的方法 • 有輸入分母的方法 • 有輸出結果的方法 類別就像是生產工廠的運 作機制,建立了類別,就 可以根據這個類別,創造 出一個個的物件來使用。 72
http://MobileDev.TW Swift Programming 建立類別 73
http://MobileDev.TW Swift Programming Swift 術語小字典:iVar • 實體變數(instance variable) •
簡稱 iVar • 相當於一個類別中的屬性定義 就像是一個工廠的儲 存空間。 在設計類別時,需要 思考有哪些東西需要 一個儲存空間,這些 東西會被各個運作部 門所使用。 74
http://MobileDev.TW Swift Programming 蓋一間工廠,需要說明有哪些成員、 裡面有哪些機器在運作,並且實際把 這些機器的運作流程都描述清楚 你給我豬肉,我給你香腸 75
http://MobileDev.TW Swift Programming 使用類別來生成實體 76
http://MobileDev.TW Swift Programming 來寫一個計算機! 讓我們一起再蓋一間更完善的工廠吧 77
http://MobileDev.TW Swift Programming 來寫一個計算機! • 建立一個計算機類別,裡面放一個iVar來儲存結果 • 初始化結果 •
計算用的方法 • 加法 • 減法 • 乘法 • 除法 78
http://MobileDev.TW Swift Programming 建立類別 79
http://MobileDev.TW Swift Programming 使用類別 80
http://MobileDev.TW Swift Programming 繼承的概念 從0開始太累了,借用前人種的樹吧! 81
http://MobileDev.TW Swift Programming 3-1.運用繼承再客製化類別 • 設計一個正方形類別 1. 若原先已經有矩形類別,那就繼承它,創一個正方形類別 2.
再增加正方形需要用的屬性與方法 3. 正方形這個類別,可以使用矩形類別中的屬性與方法 矩形類別 iVar Ra; iVar Rb; Method R1; Method R2; 正方形類別 : 矩形類別 iVar Ra; iVar Rb; Method R1; Method R2; iVar Sa; iVar Sb; Method S1; Method S2; 82
http://MobileDev.TW Swift Programming 繼承的運作 • 父類別的所有實體變數與方法,都會成為子類別定 義的一部份。 • 子類別可以直接存取這些方法與實體變數。
• 首先會先確認該變數或方法是否存在目前物件的類 別定義中,若沒有,則會往父類別去尋找。 83
http://MobileDev.TW Swift Programming 建立一個一般形狀的類別 84
http://MobileDev.TW Swift Programming Lab 1. 增加一個iVar為let資料型態,裡面儲存圖案名稱 2. 增加一個有輸入變數的方法,可設定為幾邊形 85
http://MobileDev.TW Swift Programming Lab 86
http://MobileDev.TW Swift Programming 自訂初始化方法 87
http://MobileDev.TW Swift Programming 繼承:建立正方形類別 88
http://MobileDev.TW Swift Programming Lab:建立一個圓形的類別 1. 製作一個新的類別叫Circle 2. 初始化中輸入半徑、名稱 3.
實作area、simpleDescription方法 89
http://MobileDev.TW Swift Programming Lab 90
http://MobileDev.TW Swift Programming 全部都寫在一起,萬一程式碼很多怎麼辦 把類別放在不同的檔案中 91
http://MobileDev.TW Swift Programming 用檔案來區分用途 • 全部寫在一起難 以管理 • 一個類別一個檔案
class A{ …. } class B{ …. } class C{ …. } class D{ …. } class E{ …. } A.swift B.swift C.swift D.swift E.swift 92
http://MobileDev.TW Swift Programming Lab 請將Shape, Square, Circle分別獨立成檔案,並且測 試是否仍可在main.swift中順利建立實體 93
http://MobileDev.TW Swift Programming 如何增加檔案? Step1.點選欲新增檔案的位置,滑鼠右鍵,New File… 94
http://MobileDev.TW Swift Programming 如何增加檔案? Step2.決定要製作的檔案類型,再按下Next 95
http://MobileDev.TW Swift Programming 如何增加檔案? Step3.命名為該Class名稱,然後把類別宣告程式碼搬 移過去 96