Swift のデータ型の確認と変換 - is / as 演算子
ここでは Swift の is と as 演算子を使って、データ型の確認・変換する方法をご説明します。
Swift で is 演算子を使ってデータ型を確認する
Swift でデータ型を確認するには is 演算子が使えます。
例えば、以下のような Any 型の value という変数に入っている値のデータ型が、String か確認したい時は次のようにできます。
let value : Any = "test"
if value is String {
print("value is String")
} else {
print("value is not String")
}
これを実行すると value に入っている値は文字列なので value is String と表示されます。
value に整数の値を代入して実行してみます。
let value : Any = 1
if value is String {
print("value is String")
} else {
print("value is not String")
}
これを実行すると value に入っている値は整数なので value is not String と表示されます。
Swift で as 演算子を使ってデータ型を変換する
Swift でデータ型を変換するには as 演算子が使えます。
as? 演算子では、タイプを確認して、オプショナルのデータ型に変換します。
変換できない場合は nil になります。
以下のような value 変数を as? を使ってキャストして、データ型を確認してみます。
let value : Any = "test"
let val1 = value as? String
print(type(of: val1))
let val2 = value as? Int
print(type(of: val2))
これを実行すると次のようになります。
val1 は test という値の入ったオプショナルの String に変換されています。
test を整数に変換できないので、val2 の値は nil になり、データ型はオプショナルの Int になっているのがわかります。
as! 演算子は as? と同じ使い方で使えますが、オプショナルではないデータ型に変換します。
let value : Any = "test"
let val1 = value as! String
print(type(of: val1))
変換に失敗した時は、プログラムがクラッシュしてしまうのでお気をつけください。
絶対に変換が成功するとわかっているような状況で、オプショナルでないデータ型に変換したい時にのみ使います。
let value : Any = "test"
let val2 = value as! Int
print(type(of: val2))
以上、Swift の is と as 演算子を使って、データ型の確認・変換する方法をご説明しました。