本エントリではSwiftにおけるキャスト(型変換)についてまとめる。
キャスト(型変換)とは
特定のインスタンスのデータ型を、他のデータ型に変換すること。
例えば以下のように文字列型のデータを整数型のデータに変換する操作などを指す。
"100" → 100
種類
キャストには大きく分けて次の2種類が存在する。
- アップキャスト
- ダウンキャスト
以下でそれぞれを説明する。
アップキャスト
より抽象的な型に変換すること。
例えば String
をAny
に変換すること。
アップキャストはより大きい集合のデータ型へ変換を行うため、必ずキャストすることができる。
ダウンキャスト
より具体的な型に変換すること。
例えばAny
をString
に変換すること。
ダウンキャストはより小さい集合のデータ型へ変換を行うため、キャストができない場合がある。
方法
アップキャスト
Swiftではアップキャストはオペレーターas
で行われる。
例えば次の様に行う。
var value: String = "hello, world" var value2: Any = value as Any
ダウンキャスト
アップキャストの場合は上記の流れで必ずキャストできる。
問題はダウンキャスト。こちらはキャストできない可能性を孕んでいるため、
as!
as?
のキーワードを使用してアンラップを行う必要がある。
as!
強制的にアンラップする。もしキャストできない場合はエラーとなる。
var value: String = "hello, world" var value2: Int = value as! Int // これはエラー
as?
キャストできない場合、nilが返される。
var value: String = "hello, world" var value2: Int = value as? Int // value2にはnilが入る