Swift 2でtoIntが使えない!unavailableエラーが出た時の対処方法

公開日: : 最終更新日:2016/02/10 iPhoneアプリ開発

20160126-141427.jpg

Swift 2でtoInt()を使うと、

‘toInt()’ is unavailable: Use Int() initializer

というエラーが出てしまいます。そんな時の対処方法について解説したいと思います。

    

スポンサード リンク

Swift 2ではtoInt()が廃止された

Swift 2では、toInt()が廃止されてしまいました。

先ほどのエラーメッセージをよく見ると

‘toInt()’ is unavailable

と書いてあることからも分かります。

    

toInt()のかわりにInt()イニシャライザを使う

ではどうやって文字列をInt型の数値に変換すれば良いのでしょうか?

先ほどのエラーメッセージをよく見ると

Use Int() initializer

と書いてあるので、Int()イニシャライザーを使いましょう。

let str = "123"
let num = Int(str)

これで文字列strをInt型の数値に変換できます。

    

変換に失敗した時のことを考える

ただし、文字列を数値に変換するという処理には失敗がありえます。

例えば “123” という文字列は数値 123 に変換できますが、 “Hello” という文字列は数値に変換できません。

よって、Int(str)の結果はIntではなくInt?(Intのオプショナル)となっており、変換に失敗した場合にはnilが返ってきます。

なので、実際には以下の様なコードを書く必要があるでしょう。

    

例1 if letを使う場合

let str = "123"

if let num = Int(str) {
    // 変換に成功した場合
    
    // ここで変換結果numを使って、処理を行える
    print(num)
}else{
    // 変換に失敗した場合
    
    // 変換に失敗しているので、変換結果numは存在せず、使用できない
}

    

例2 guard letを使う場合

func method() {
    
    let str = "123"
    
    guard let num = Int(str) else {
        // 変換に失敗した場合
        
        // 変換に失敗しているので、変換結果numは存在せず、使用できない
        
        return // ここでmethodの処理は終了
    }
    
    // 変換に成功した場合
    
    // ここで変換結果numを使って、処理を行える
    print(num)
}

    

例3 ??を使う場合

let str = "123"

// 変換に成功したらその結果をnumに入れる。
// 変換に失敗したら 0 をnumに入れる。
let num = Int(str) ?? 0

    

@akio0911はこう思った。

今回紹介したのはSwift 2での仕様変更が原因のエラーなので、僕が主催しているアプリ開発講座でも頻繁に質問される内容だったりします。

ちなみに、サンプルコード内で使った if let や guard let などの詳しい使い方については、以下の本に載っています!

    

    

    

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

関連記事

I20151119-165939.jpg

Swift 2.1に対応した本「詳解 Swift 改訂版」が出るぞ!

Swiftの文法に関する解説書の定番「詳解 Swift」の、Swift2.1に対応した改訂版「詳

記事を読む

20150525-224340.jpg

【Swift】クロージャをメソッドや関数の引数として渡す方法

Swiftでメソッドの引数としてクロージャを渡す方法について解説したいと思います。     

記事を読む

20140807-182914.jpg

【アプリ開発】iOS 8とiOS 7でUIAlertController・UIAlertView・UIActionSheetを切り替えて使う方法

@akio0911です。今までお世話になったUIAlertViewとUIActionShee

記事を読む

20141228-232009.jpg

【Swift】as?演算子を使ったキャストでは結果がoptionalとなる

今日はSwiftのas演算子とas?演算子について解説したいと思います。as演算子について

記事を読む

I20160513-010707.jpg

Swiftで計算型プロパティをネストさせてみる

Swiftの計算型プロパティ(Computed property、コンピューテッドプロパティ)を

記事を読む

20160309-131202.jpg

ゆるい入門書では物足りない人向けの濃い内容!「本気ではじめるiPhoneアプリ作り」

ヤフー株式会社のiOSエンジニアである西 磨翁(にし まお)さんより、「本気ではじめるiPhon

記事を読む

20160420-180135.jpg

【RxSwift】2つのUITextFieldに入力された数値の合計をUILabelに表示する

そろそろRxSwiftについて学び始めよう!ということで、まずは2つのUITex

記事を読む

[iOS][Swift]指定したディレクトリにあるファイルの一覧を取得する

iOSで、指定したディレクトリにあるファイルの一覧を取得する方法について紹介します。

記事を読む

20140724-103334.jpg

iPhoneアプリ開発にオススメの本10選(2014年7月版)

@akio0911です。2013年12月に「レベル・目的別!iPhoneアプリ開発おすすめ本

記事を読む

I20160207-111059.jpg

【Swift】Xcodeで型推論された変数や定数の型を調べる方法

Swiftには、そのデータ型が明らかであれば型を明記する必要が無い「型推論」という機能があります

記事を読む

【Mac】macOSのメール(Mail.app)でGmailをサクサク快適に使う方法

macOSに搭載されているメールアプリ、いわゆるMail.ap

【メンズネイル】新宿区大久保のネイルサロンで紫とピンクのネイルにしてもらった

2016年11月12日、東京都新宿区大久保にあるネイルサロン「

[Xcode][Swift]ボタンなどの同時タップを禁止する

iOSで、ボタンなどの同時タップを禁止する方法を紹介します。

【HomeKit】家の照明をSiriで制御できるようにしてみた

Apple製品と家電を連携するシステム「HomeKit(ホーム

【メンズネイル】新宿区大久保のサロンでターコイズとピンクのメタルネイルにしてもらった

2016年10月22日、いつもお世話になっているネイルサロン「

→もっと見る

PAGE TOP ↑