Swift18 型別轉換

2022-08-12 07:42:20 字數 1145 閱讀 7452

定義乙個型別層次作為例子、檢查型別、向下轉換、any和anyobject的型別轉換。

型別轉換可以判斷例項的型別,也可以將例項看作是其父類或者子類的例項。

型別轉換在swift中使用is和as操作符實現。這兩個操作符提供了一種簡單達意的方式去檢查其值的型別或者轉換它的型別。

也可以用它來檢查乙個型別是否實現了某個協議。

定義乙個類層次作為例子:

可以將型別轉換用在類和子類的層次結構上,檢查特定類例項的型別並且轉換這個類例項的型別成為這個層次結構中的其它型別。

class mediaitemelse if item is song{

songcount+=1

向下轉型:

某型別的乙個常量或者變數可能在幕後實際上屬於乙個子類。當確定是這種情況時,可以嘗試向下轉到它的子型別,用型別轉換操作符(as?或as!)

因為向下轉型可能會失敗,型別轉換操作符帶有兩種不同形式。條件形式as?返回乙個試圖向下轉成的型別的可選值。

強制形式as!把試圖向下轉型和強制解包**換結果)結合為乙個操作。

條件形式的as?型別轉換總是返回乙個可選值,並且若下轉是不可能的,可選值將是nil。這使得能夠檢查向下轉型是否成功。

只有在確定向下轉型一定會成功時,才使用強制形式(as!)。當試圖向下轉型為乙個不正確的型別時,強制形式的型別轉換會觸發乙個執行時錯誤。

any和anyobject的型別轉換:

swift為不確定型別提供了兩種特殊的型別別名:

1)any可以表示任何型別,包括函式型別。

2)anyobject可以表示任何型別的例項。

只有當確定需要它們的行為和功能時才使用any和anyobject。在你的**裡使用你期望的明確型別總是更好的。

var things=[any]()

//建立了乙個可以儲存any型別的陣列things,它可以同時儲存任何型別

注意:any型別可以表示所有型別的值,包括可選型別。swift會在使用any型別來表示乙個可選值的時候,給你乙個警告。如果你確實想使用any型別來承載可選值,你可以使用as操作符顯式轉換為any。

let optionlnumber:int?=3

swift 9 型別轉換

型別轉換可以判斷例項的型別,也可以將例項看做是其父類或者子類的例項。型別轉換在 swift 中使用 is 和 as 操作符實現。這兩個操作符提供了一種簡單達意的方式去檢查值的型別或者 轉換它的型別。你也可以用它來檢查乙個類是否實現了某個協議。你可以將型別轉換用在類和子類的層次結構上,檢查特定類例項的...

iOS開發 Swift 總結30 型別轉換

第2部分 故事的高階要素 程式語言swift的高階部分 18 型別轉換 18.1 概念通俗講解 型別轉換就是轉換當前常量,變數,例項的型別。例如int型別轉換為string 18.2 定義簡潔介紹 下面介紹4個常用的使用場景 1 普通資料轉換 用構造方法 例如int轉換為string,如下 let ...

swift基礎day6 型別轉換 巢狀型別

型別轉換在 swift 中使用 is 和 as 分別提供了一種方式去檢查值的型別或者轉換它的型別。為型別轉換定義類層次 將型別轉換用在類和子類的層次結構上,檢查特定類例項的型別並且轉換這個類例項的型別成為這個層次結構中的其他型別.class mediaitem class movie mediait...