Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Swift Basic

1,603 views

Published on

http://MobileDev.TW

Published in: Technology
  • Be the first to comment

Swift Basic

  1. 1. http://MobileDev.TWSwift Programming iOS APP Developer Swift 語法入門 Ryan@MobileDev.TW 1
  2. 2. http://MobileDev.TWSwift Programming Swift •  支援playground,可快速測試 •  效能最佳化 •  可以從Hello World到甚至作業系統都可開發 2
  3. 3. http://MobileDev.TWSwift Programming 大綱 1.  Hello Swift! Xcode環境認識 2.  變數與常數 3.  陣列與字典 4.  控制流程 5.  函數 6.  物件與類別 3
  4. 4. http://MobileDev.TWSwift Programming 1.Hello Swift! Xcode環境認識 4
  5. 5. http://MobileDev.TWSwift Programming 1.選擇Create a new Xcode project 5
  6. 6. http://MobileDev.TWSwift Programming 2.選擇macOS-Command Line Tool 6
  7. 7. http://MobileDev.TWSwift Programming Xcode的樣板專案分類介紹 7
  8. 8. http://MobileDev.TWSwift Programming 3.輸入專案名稱,語言選Swift,存檔 8
  9. 9. http://MobileDev.TWSwift Programming 4.執行應用程式 9
  10. 10. http://MobileDev.TWSwift Programming 重點理解 1.  main.swift是程式的進入點 2.  Import匯入基本程式所需的Framework 3.  利用print來輸出資訊於console 10
  11. 11. http://MobileDev.TWSwift Programming What is print? 游標放在print上,按下alt,看到問號後按下滑鼠左鍵 11
  12. 12. http://MobileDev.TWSwift Programming 任務:輸出相加結果 12
  13. 13. http://MobileDev.TWSwift Programming 變數/常數宣告 你會不會變… 13
  14. 14. http://MobileDev.TWSwift Programming 變數與常數 •  let:宣告常數 •  很多地方要用且不會改變,只指定值一次 •  var:宣告變數 14
  15. 15. http://MobileDev.TWSwift Programming 指定變數/常數的資料型態 •  常數/變數名稱 : 資料型態 •  可先宣告再給值 或 直接給值 15
  16. 16. http://MobileDev.TWSwift Programming Convert value to different type 16
  17. 17. http://MobileDev.TWSwift Programming Type conversion in string (string interpolation) 17
  18. 18. http://MobileDev.TWSwift Programming 常數/變數也可先做運算 18
  19. 19. http://MobileDev.TWSwift Programming 多種型態一起輸出 19
  20. 20. http://MobileDev.TWSwift Programming 字串相加 20
  21. 21. http://MobileDev.TWSwift Programming 註解 •  單行: // •  多行: /* …… */ 21
  22. 22. http://MobileDev.TWSwift Programming 陣列與字典 Array Dictionary 22
  23. 23. http://MobileDev.TWSwift Programming 字典 Dictionary 23
  24. 24. http://MobileDev.TWSwift Programming 改變字典某項目的值 24
  25. 25. http://MobileDev.TWSwift Programming 建立一個空的字典 25
  26. 26. http://MobileDev.TWSwift Programming 字典取值 26
  27. 27. http://MobileDev.TWSwift Programming 陣列取值 27
  28. 28. http://MobileDev.TWSwift Programming 建立一個空的陣列 28
  29. 29. http://MobileDev.TWSwift Programming 大量調整陣列 29
  30. 30. http://MobileDev.TWSwift Programming 陣列排序 順著排 30 倒著排
  31. 31. http://MobileDev.TWSwift Programming You should got it NOW •  Xcode可以製作哪些種類的應用程式 •  如何查閱進一步解釋 •  如何跳至匯入程式碼的原始位置 •  如何使用print顯示變數的值 •  變數與常數該如何宣告 •  陣列與字典是什麼?要如何存取? 31
  32. 32. http://MobileDev.TWSwift Programming 控制流程 重複的工作請電腦幫你完成 32
  33. 33. http://MobileDev.TWSwift Programming 控制流程 •  if •  switch •  for-in •  for •  while •  repeat-while 33
  34. 34. http://MobileDev.TWSwift Programming 計算優秀與不及格的數量 34
  35. 35. http://MobileDev.TWSwift Programming Optional Value 你若是不在了,我會… 35
  36. 36. http://MobileDev.TWSwift Programming Optional Value •  標示出可能為空值的風險 •  標示方式:? 問號 36
  37. 37. http://MobileDev.TWSwift Programming 如果有值才…的寫法 if let 37
  38. 38. http://MobileDev.TWSwift Programming Why Swift need optional? 1.  有些情況會讓方法本身無法回傳值 •  var x=ABC.toInt() 2.  有些物件建構時,還沒有辦法決定某個屬性值 •  畫面上的按鈕要在哪裡 38
  39. 39. http://MobileDev.TWSwift Programming 安全地處理有值與無值的狀況 將 x可能的兩種情況分開處理 39
  40. 40. http://MobileDev.TWSwift Programming if不用括號,但是一定要是判斷式或布林值 在Swift中,if後面一定要接判斷式或是布林值 40
  41. 41. http://MobileDev.TWSwift Programming Swift 3 不能用 ++ 在Swift中,if後面一定要接判斷式或是布林值 41
  42. 42. http://MobileDev.TWSwift Programming 很確定有值的情況,驚嘆號解開! 42
  43. 43. http://MobileDev.TWSwift Programming Optional Chaining 問號除了用在宣告外,也可以繼續跟著變數走,持續 為optional type 43
  44. 44. http://MobileDev.TWSwift Programming as? 與as! •  as? •  轉換型態但維持是optional,所以還是需要搭配if let 比較保險 •  as! •  強制轉換型態,並且解開 44
  45. 45. http://MobileDev.TWSwift Programming Switch..Case •  支援資料型態更廣泛 •  可多個狀況合併在一起(逗號分開) •  可使用判斷式 •  不用寫break,對應到執行完case就離開 •  default一定要寫 45
  46. 46. http://MobileDev.TWSwift Programming Switch..Case 多種狀況對應用逗號隔開 46
  47. 47. http://MobileDev.TWSwift Programming Switch..Case 可使用判斷式 47
  48. 48. http://MobileDev.TWSwift Programming Switch..Case 如果沒寫default會出什麼錯? 48
  49. 49. http://MobileDev.TWSwift Programming 任務 請電腦幫我印出 1 ~ 10 49
  50. 50. http://MobileDev.TWSwift Programming For迴圈 50
  51. 51. http://MobileDev.TWSwift Programming 任務 抓出不及格的學生 51
  52. 52. http://MobileDev.TWSwift Programming for in 52
  53. 53. http://MobileDev.TWSwift Programming 任務 找到女生 53
  54. 54. http://MobileDev.TWSwift Programming for in 54
  55. 55. http://MobileDev.TWSwift Programming 找到最大值 55
  56. 56. http://MobileDev.TWSwift Programming Lab:顯示最大值的Key值 56
  57. 57. http://MobileDev.TWSwift Programming while迴圈 57
  58. 58. http://MobileDev.TWSwift Programming 任務:repeat…while •  當我們跟別人說話時,有些時候別人沒有聽到,所 以我們會重複說一次,直到對方聽到為止 •  請用程式模擬,亂數決定對方有沒有聽到,並印出 對對方說的話 58
  59. 59. http://MobileDev.TWSwift Programming Function 函數 這個箱子有進有出,為了特定功能而存在著 59
  60. 60. http://MobileDev.TWSwift Programming 最基本的函數:0進0出 •  關鍵字:func 60
  61. 61. http://MobileDev.TWSwift Programming 有產出的函數:0進1出 •  -傳回值資料型態 61
  62. 62. http://MobileDev.TWSwift Programming 有輸入有產出的函數:1進1出 •  傳入變數名稱:變數資料型態 62
  63. 63. http://MobileDev.TWSwift Programming 多輸入有產出的函數:2進1出 •  多個輸入變數用逗號隔開 63
  64. 64. http://MobileDev.TWSwift Programming 多產出的函數:1進3出 •  多個輸出變數用逗號隔開,取值透過點運算子 64
  65. 65. http://MobileDev.TWSwift Programming 不定量的多變數輸入 65
  66. 66. http://MobileDev.TWSwift Programming Lab:改寫上個範例,計算平均 66
  67. 67. http://MobileDev.TWSwift Programming 物件與類別 Object Class 67
  68. 68. http://MobileDev.TWSwift Programming 從一個簡單的分數開始 68
  69. 69. http://MobileDev.TWSwift Programming 目前我們透過直接給值來顯示分數 指定固定的分子與分母 69
  70. 70. http://MobileDev.TWSwift Programming 顯示一個分數 70
  71. 71. http://MobileDev.TWSwift Programming 現在我們希望蓋一間工廠,給它分子 與分母,它就產生分數給我們 類別的初體驗 71
  72. 72. http://MobileDev.TWSwift Programming 建立類別 •  建立一個運算分數的類別 •  裡面有分子、分母 •  有輸入分子的方法 •  有輸入分母的方法 •  有輸出結果的方法 類別就像是生產工廠的運 作機制,建立了類別,就 可以根據這個類別,創造 出一個個的物件來使用。 72
  73. 73. http://MobileDev.TWSwift Programming 建立類別 73
  74. 74. http://MobileDev.TWSwift Programming Swift 術語小字典:iVar •  實體變數(instance variable) •  簡稱 iVar •  相當於一個類別中的屬性定義 就像是一個工廠的儲 存空間。 在設計類別時,需要 思考有哪些東西需要 一個儲存空間,這些 東西會被各個運作部 門所使用。 74
  75. 75. http://MobileDev.TWSwift Programming 蓋一間工廠,需要說明有哪些成員、 裡面有哪些機器在運作,並且實際把 這些機器的運作流程都描述清楚 你給我豬肉,我給你香腸 75
  76. 76. http://MobileDev.TWSwift Programming 使用類別來生成實體 76
  77. 77. http://MobileDev.TWSwift Programming 來寫一個計算機! 讓我們一起再蓋一間更完善的工廠吧 77
  78. 78. http://MobileDev.TWSwift Programming 來寫一個計算機! •  建立一個計算機類別,裡面放一個iVar來儲存結果 •  初始化結果 •  計算用的方法 •  加法 •  減法 •  乘法 •  除法 78
  79. 79. http://MobileDev.TWSwift Programming 建立類別 79
  80. 80. http://MobileDev.TWSwift Programming 使用類別 80
  81. 81. http://MobileDev.TWSwift Programming 繼承的概念 從0開始太累了,借用前人種的樹吧! 81
  82. 82. http://MobileDev.TWSwift 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
  83. 83. http://MobileDev.TWSwift Programming 繼承的運作 •  父類別的所有實體變數與方法,都會成為子類別定 義的一部份。 •  子類別可以直接存取這些方法與實體變數。 •  首先會先確認該變數或方法是否存在目前物件的類 別定義中,若沒有,則會往父類別去尋找。 83
  84. 84. http://MobileDev.TWSwift Programming 建立一個一般形狀的類別 84
  85. 85. http://MobileDev.TWSwift Programming Lab 1.  增加一個iVar為let資料型態,裡面儲存圖案名稱 2.  增加一個有輸入變數的方法,可設定為幾邊形 85
  86. 86. http://MobileDev.TWSwift Programming Lab 86
  87. 87. http://MobileDev.TWSwift Programming 自訂初始化方法 87
  88. 88. http://MobileDev.TWSwift Programming 繼承:建立正方形類別 88
  89. 89. http://MobileDev.TWSwift Programming Lab:建立一個圓形的類別 1.  製作一個新的類別叫Circle 2.  初始化中輸入半徑、名稱 3.  實作area、simpleDescription方法 89
  90. 90. http://MobileDev.TWSwift Programming Lab 90
  91. 91. http://MobileDev.TWSwift Programming 全部都寫在一起,萬一程式碼很多怎麼辦 把類別放在不同的檔案中 91
  92. 92. http://MobileDev.TWSwift Programming 用檔案來區分用途 •  全部寫在一起難 以管理 •  一個類別一個檔案 class A{ …. } class B{ …. } class C{ …. } class D{ …. } class E{ …. } A.swift B.swift C.swift D.swift E.swift 92
  93. 93. http://MobileDev.TWSwift Programming Lab 請將Shape, Square, Circle分別獨立成檔案,並且測 試是否仍可在main.swift中順利建立實體 93
  94. 94. http://MobileDev.TWSwift Programming 如何增加檔案? Step1.點選欲新增檔案的位置,滑鼠右鍵,New File… 94
  95. 95. http://MobileDev.TWSwift Programming 如何增加檔案? Step2.決定要製作的檔案類型,再按下Next 95
  96. 96. http://MobileDev.TWSwift Programming 如何增加檔案? Step3.命名為該Class名稱,然後把類別宣告程式碼搬 移過去 96

×