このコードの何が問題になっていますか?
リストを文字列と数値に指定するにはどうすればよいですか?
「AnyObject は 'Int' に変換できません」というエラーが表示されます
var stringNum = ["name", 2]
var number:Int = stringNum[1]
このコードの何が問題になっていますか?
リストを文字列と数値に指定するにはどうすればよいですか?
「AnyObject は 'Int' に変換できません」というエラーが表示されます
var stringNum = ["name", 2]
var number:Int = stringNum[1]
配列は型であると推測され、swift では、変数を常に明示的にダウンキャスト[AnyObject]
する必要があります。
値を Int に変換できるかどうかをテストする必要があります。
if let number : Int = stringNum[1] as? Int {
// use number as Int
}
値を変換できず、ブロックが実行されない場合、演算子as?
は返されます。それ以外の場合は、Int に変換された値が返され、Int 値に設定されたブロックが実行されます。nil
if
if
number
配列内の要素が期待どおりに型付けされていると確信している場合は、単純に
var number:Int = stringNum[1] as Int
動作します。ただし、配列要素の型の一貫性が不明な場合は、割り当てる前に型を確認する必要があります。