# 從基礎學習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是個可自訂呈現內容的寫法。