Swift4 コーディングミスに気づかずに無限地獄…

先日、Swift の コーディングをうっかりミスしてしまっていたことに気づかず…

何が起きたのか全く見失ってしまい…たくさんの時間を浪費してしまいました…。

とても恥ずかしい内容ですが…戒めとして記録しておこうと思います…。

 

何をしてしまったかというと、以下のような for文 を書いてしまいました。

    func test() {
        
        var aaa: [Int]? = nil
        var bbb = [ 1, 2, 3, 4 ]
        
        aaa = bbb
        
        //こういう記述をしてしまいました...
        for c: Int? in aaa! {
            print("c = \(c)")
        }
        
        print("!!!")
    }

エラーにならずに実行できますが、for文が無限ループになります。

実際は、for文で処理した結果のdelegateの関数が呼ばれるはずなのに…何も起きない!? とパニックになってしまい…。
ずっと無関係のリファレンスを追っかけたり、仕様についてググったりしてました…orz

問題のfor文は、以下のように修正しました。

        for c: Int in aaa! {
            print("c = \(c)")
        }

多分、こういう風にも書けるのかな。

        for c: Int? in aaa {
            if let c = c {
                print("c = \(c)")
            }
        }

このミスの修正は、最後の最後まで自分で気づくことができず…結局、助けてもらいましたが、あまりに恥ずかしすぎて泣きそうでした…。 ^^;

Swift の ? ! ?? …の仕様は独特ですね…。
Swiftが初心者用の言語?今のところ、全然実感がないです… ^^;


Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です