<font color="#8A2BE2">[Udemy IOS Angela]</font> Ch4 Swift 程式基礎 常數、變數 === # Ch4 ## intro :::success shell/terminal/command line/bash ::: ## 36. How to design your app ![](https://i.imgur.com/zvxcDoV.png) 常壓option按鈕+移動 = 複製 ![](https://i.imgur.com/FgZR0zI.png) 壓control 把Main/ViewController/裡面的圖 -> 拉到 code裡面建立 ```swift= @IBOutlet weak var diceImageView2: UIImageView! ``` ```swift= Who.What(屬性) = Value ``` ```swift= #imageLiteral( ``` ```swift= override func viewDidLoad() { Code goes here } ``` ## 38. Responding to User Interactions with IBActions ```swift= @IBAction func rollButtonPressed(_ sender: UIButton) { diceImageView1.image = #imageLiteral(resourceName: "DiceFour") //變成 #imageLiteral( diceImageView2.image = #imageLiteral(resourceName: "DiceFour") print("Button got tapped.") //“”only } ``` ![](https://i.imgur.com/ZHlUDQT.jpg) ## 40. [Swift Deep Dive] Naming Conventions, Commenting and String Interpolation :::success 駝峰是命名 //備註方法 ::: ```swift= 語法 print("Text \(2+3) Text") 範例 print("Hello \(2+3) Word") //Hello 5 Word 範例 print("The result of 5 + 3 = \(2+3)") //The result of 5 + 3 = 5 ``` ### 陣列 ```swift= [元素1, 元素2, 元素3, 元素4] [選第幾個元素] ``` ![](https://i.imgur.com/vF9KlvG.png) :::danger 按Roll 骰子2 按Roll 骰子3 按Roll 骰子4 按Roll 骰子5 按Roll 骰子6 ```swift= //類 class ViewController: UIViewController { //變數 var leftDiceNumber = 1 //變數 = 數字 //函式 @IBAction func rollButtonPressed(_ sender: UIButton) { // 左邊的骰子 陣列 陣列內第幾個 diceImageView1.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [leftDiceNumber] leftDiceNumber = leftDiceNumber + 1 } } ``` ![](https://i.imgur.com/42nsNV0.png) ::: :::success 按Roll 骰子2 按Roll 骰子一樣.... ```swift= //類 class ViewController: UIViewController { //函式 @IBAction func rollButtonPressed(_ sender: UIButton) { // 左邊的骰子 陣列 陣列內第幾個 //變數 var leftDiceNumber = 1 //變數 = 數字 diceImageView1.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [leftDiceNumber] leftDiceNumber = leftDiceNumber + 1 } } ``` ![](https://i.imgur.com/zuHcCEh.jpg) ::: ## 41. Storing Data using Variables and Arrays :::success 建立一個函式,按一次Roll 左邊+1 右邊-1 ```swift= class ViewController: UIViewController { var leftDiceNumber = 1 //起始變數 = 數字 var rightDiceNumber = 5 //起始變數 = 數字 @IBAction func rollButtonPressed(_ sender: UIButton) { // 左邊的骰子 陣列 陣列內第幾個(index) diceImageView1.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [leftDiceNumber] // 右邊骰子 diceImageView2.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [rightDiceNumber] leftDiceNumber = leftDiceNumber + 1 //左骰子+1 rightDiceNumber = rightDiceNumber - 1 //右骰子-1 } ``` ![](https://i.imgur.com/AnV3I7R.png) ::: ## 42. [Swift Deep Dive] Variables ```swift= var a = 5 var b = 8 var temp = 5 print("The value of a is\(a)") print("The value of a is\(b)") a = b b = temp print("The value of a is\(a)") print("The value of a is\(b)") ``` ![](https://i.imgur.com/bcRzKbD.png) ## 43. [Swift Deep Dive] Arrays ```swift= var numbers = [45, 73, 195, 53] //寫法1 var numbers0 = numbers[0] var numbers1 = numbers[1] var numbers2 = numbers[2] var numbers3 = numbers[3] var computedNumbersArray = [numbers0*numbers1, numbers1*numbers2, numbers2*numbers3] print("computedNumbersArray 是 \(computedNumbersArray)") //computedNumbersArray 是 [3285, 14235, 10335] //寫法2 var computedNumbers = [45*73, 73*195, 195*53] print("computedNumbers 是 \(computedNumbers)") //computedNumbers 是 [3285, 14235, 10335] ``` ![](https://i.imgur.com/aTRQdMV.png) ## 44. 初始code ```swift= // // ViewController.swift // Dicee-iOS13 // // Created by Angela Yu on 11/06/2019. // Copyright © 2019 London App Brewery. All rights reserved. // import UIKit class ViewController: UIViewController { @IBOutlet weak var diceImageView1: UIImageView! //用control拉進來 @IBOutlet weak var diceImageView2: UIImageView! var leftDiceNumber = 1 //起始變數 = 數字 var rightDiceNumber = 5 //起始變數 = 數字 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. //WHO WHat VALUE diceImageView1.image = #imageLiteral(resourceName: "DiceThree") //變成 #imageLiteral( diceImageView1.alpha = 0.5; //變淡 diceImageView2.image = #imageLiteral(resourceName: "DiceTwo") } @IBAction func rollButtonPressed(_ sender: UIButton) { // print("左邊骰子點數目前是\(leftDiceNumber)")//目前骰子點數 // 左邊的骰子 陣列 陣列內第幾個(index) diceImageView1.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [leftDiceNumber] // 右邊骰子 diceImageView2.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [rightDiceNumber] leftDiceNumber = leftDiceNumber + 1 //左骰子+1 rightDiceNumber = rightDiceNumber - 1 //右骰子-1 // print("左邊骰子點數目前是\(leftDiceNumber)")//印出+1後骰子點數 } } ``` ```swift= 隨機數字 print(Int.random(in: 1...10)) //整數.隨機(在1...到10) ``` :::success ```swift= import UIKit class ViewController: UIViewController { @IBOutlet weak var diceImageView1: UIImageView! //用control拉進來 @IBOutlet weak var diceImageView2: UIImageView! @IBAction func rollButtonPressed(_ sender: UIButton) { // 左邊的骰子 陣列 『選取』陣列內第幾個(index) // 『選取』整數.隨機(在1...到10) diceImageView1.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [Int.random(in: 1...5)] // 右邊骰子 diceImageView2.image = [ #imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix") ] [Int.random(in: 1...5)] } } ``` ![](https://i.imgur.com/m6TGAwU.png) ::: ### Xcode命名方式 ```swift= var x= [0,1,2] //報錯,等號左邊無空格,等號右邊有空格,不行這樣寫 var x=[0,1,2] //可以,使用無空格 var x = [0,1,2] //可以,使用有空格 ``` ### 不要用骰子圖 :::success ```swift= import UIKit class ViewController: UIViewController { @IBOutlet weak var diceImageView1: UIImageView! //用control拉進來 @IBOutlet weak var diceImageView2: UIImageView! @IBAction func rollButtonPressed(_ sender: UIButton) { var diceArray = [#imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix")] //建立陣列變數 // 左邊的骰子 = 陣列 『選取』陣列內第幾個(index) // 『選取』整數.隨機(在1...到10) // 使用建立的變數 diceImageView1.image = diceArray[Int.random(in: 1...5)] // 右邊骰子 diceImageView2.image = diceArray[Int.random(in: 1...5)] } } ``` ![](https://i.imgur.com/GBEs5ox.png) ::: ### Var(可改變的) 與 let(不可改變的) ```swift= let x = 2 x = 3 //報錯,因為在swift中,let是『不可以』改變的 var x = 2 x = 3 //正確,因為在swift中,var是『可以』改變的 ``` ### Int.random(in:0...5) = .randomElement(in:0...5) ```swift= 這兩種寫法是一樣的 //寫法1 diceImageView1.image = diceArray.randomElement() //寫法2 diceImageView1.image = diceArray[Int.random(in: 1...5)] ``` ## 45. How to Solve the Error: "Maximum number of apps for free development reached" ? The easiest solution is to simply delete the existing apps you've got on your iPhone/iPad. ## 46. [Swift Deep Dive] Constants, the Range Operator and Randomisation ### data type Int 1(整數Interger) float 12.345(浮點數Floating Point Number) Double 3.14159265359....(雙精度浮點數) ex600個小數點 Bool True/False (布林Boolean) ### 隨機整數 ```swift= 隨機1~3 Int.random(in: lower ... upper) let randomNumber = Int.random(in: 1 ... 3) //隨機1~3 print(randomNumber) 隨機1~2,不包含3 Int.random(in: lower ..< upper) let randomNumber = Int.random(in: 1 ..< 3) //隨機1~2,不包含3 print(randomNumber) ``` ### 隨機布林 ```swift= Bool.random() ``` ### 陣列內元素隨機前後調整 ```swift= array[Int.random(in: 1 ... 5)] array.randomElement() array.shuffle() ``` ### 小挑戰 :::success Array[Int.random(in: lower...Upper)] ```swift= //Test let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] //print(alphabet.()) let password1 = alphabet[Int.random(in: 0...26)] //陣列中抽出 隨機第一個英文 let password2 = alphabet[Int.random(in: 0...26)] //陣列中抽出 隨機第二個英文 let password3 = alphabet[Int.random(in: 0...26)] let password4 = alphabet[Int.random(in: 0...26)] let password5 = alphabet[Int.random(in: 0...26)] let password6 = alphabet[Int.random(in: 0...26)] let password = password1+password2+password3+password4+password5+password6 //英文做連接 print("密碼是: \(password)") //印出 ``` ![](https://i.imgur.com/vg4dpRi.png) ::: :::info Array.randomElement()! ```swift= //Test let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] //print(alphabet.()) let x = alphabet.randomElement()! + alphabet.randomElement()! + alphabet.randomElement()! + alphabet.randomElement()! + alphabet.randomElement()! + alphabet.randomElement()! print("密碼是: \(x)") ``` ![](https://i.imgur.com/X22g5ou.png) ::: ### 編碼練習3 用變數(不可更動)算出一小時有幾秒鐘 ```swift= func exercise() { //Write your code here. let secondsInAnHour = 60*60 //Don't change the code below. print(secondsInAnHour) //3600 } ``` ### 編碼練習4 ```swift= func exercise() { //The number of letters in alphabet equals 26 let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] // 🚨 Don't change the code above 👆 //#################################### //Write your code below this line 👇 let password = alphabet[Int.random(in: 0 ... 26)] + alphabet[Int.random(in: 0 ... 26)] + alphabet[Int.random(in: 0 ... 26)] + alphabet[Int.random(in: 0 ... 26)] + alphabet[Int.random(in: 0 ... 26)] + alphabet[Int.random(in: 0 ... 26)] print(password) } ``` ###### tags: `[Udemy IOS Angela Yu]`