---
# System prepended metadata

title: 從基礎學習SWIFT CODE Part2

---


                                
# 從基礎學習SWIFT CODE Part2

## 使用array結合Dictionary
-  宣告整數陣列與字串陣列，並以Dictionary來找尋資料，可從編譯後的結果發現，使用Dictionary找尋資料時，會一併的把字串中帶的值輸出(key:value)。
![](https://i.imgur.com/Fo9VWif.jpg)

※Dictionary的KEY為整數INT類型，另外的類型為字串(String)

建立簡單的Class：
---

![](https://i.imgur.com/3thsbhr.png)
- any:任何類型(anyObject:任何 class)。
- 圖中的陣列視為any類型，可直接宣告在array後面，並加上類any :[any](由於沒有特別給array名稱則swift自動給予 any類型)。




## type Casting表示方式：

#### ★改變標籤變成其他類型的標，或檢查是否可合法使用標籤  [is] [as?] [as!]

  ![](https://i.imgur.com/WWAKEOz.png)
▲(is)※藉由[is]標籤順便學習Bool判斷!- [is]確認類型→回傳布林 ：檢查類型是否可被貼上某標籤，是否符合規範則回傳bool
-  以圖為例藉由以is來變換標籤並可印出不同的內容。
-  以[is]標籤為例element皆為CustomStringConvertible。

 
![](https://i.imgur.com/8Sob7JK.png)
▲(as)type Casting表示方式
- [as?]嘗試轉型→回傳optional:使用問號替換標籤，失敗會回傳nil。
- 圖中可發現print先打印了Int類型標籤，最後的print轉為打印String類型標籤。
- 此程式藉由[as?]element已轉為該標籤，而不是CustomStringConvertible。

![](https://i.imgur.com/jrxcUUl.png)
▲Switch表示type Casting
-  使用Switch進行轉換可不必在as與is加上!與?即可進行標籤轉換。
-  程式碼中的default為將所有的可能性打印出來。
-  此語法正是強制轉換的寫法即使失敗了，也不會跳出而是去執行下一行程式碼。
## 簡單的釐清as!與as的用法：

![](https://i.imgur.com/Dboo7oy.png)
▲[as!]可發現let intarray = array as! [Int]發生了報錯 
- 發生報錯是因為[any]=["abc",123]無法將陣列強制轉型，陣列中包含字串與整數變數，得無法作強制轉換，只要失敗則無法進行下一行的程式。
- [as!]強制轉型→回傳對應類型：告知轉型必定可以成功，則回傳對應成功類型，失敗時程式會當掉，並且無法做轉換。

![](https://i.imgur.com/UEaQX52.png)
▲[as!]將let intarray = array as!註解或刪除即可進行轉換
- customStringConvertible是個可自訂呈現內容的寫法，要求為必須定義description而這邊我所使用的是自訂array 並強制轉換得最終可將不管是整數或是字串的陣列一併打印出來。

![](https://i.imgur.com/TY2GdRl.png)
▲[as?]以?的方式來進行標籤轉換

- 使用as!可將原本的array 的any類型轉換為整數[int]標籤之寫法，從編譯結果可發現無法將array全部轉為Int型態，因為陣列中有字串，得結果為nil。
- descriptionarray已轉型為customStringConvertible的array(成功傳型)
- customStringConvertible是個可自訂呈現內容的寫法。






