Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 669 - Applying MVC

ポール先生の講義はやっと2週目に入ります。

Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U

前半はMVCの解説があります。MVCOOPの基本中の基本! 分かっていなかったら必ずオブジェクト指向でなぜつくるのか 第2版を読んでから講義を聴きましょう。この本はマストリードです。2年独学で勉強していると概念は問題無く理解できました。

早速Calculatorデモを続けていきます。

講義2はかなり情報量の多い内容になっています。Swiftの構文を朽ちしてコーディングするためSwift初心者がいきなり取り組むと挫折すると思います。アップルから公開されている正本The Swift Programming Language*1の「A Swift Tour」ぐらいはこなしているといいですね。

講義1で「π」ボタンを作りました。今日から様々な関数ボタンを実装していくのですが、その前にコードの可読性を向上させるため(Swiftの構文に馴れる必要もあるので)のSwift構文の解説があります。「performOperation」メソッド内で使っている「display.text = String(M_PI)」に注目しました。

Calculatorデモはその名の通り計算機アプリです。数字をDouble型で演算させますが、ラベル表示はString型です。String型からDouble型、Double型からString型へ何度も処理させる必要があるので、このままではコードの可読性が損なわれてしまいます。それを解決する方法として計算型プロパティ(Computed Property)を使ってすっきりさせます。

もし計算型プロパティが分からなければ、まだこのチュートリアルに取り組むのは時期尚早です。正本The Swift Programming Languageを読みましょう。

ここで計算型プロパティとして「var displayValue: Double」を用意します。実は2年前のポール先生のiOS8講座の時のコードと比較するとSwiftの進化を実感できます。初心者にも解りやすいコードが書けるようになっています。

var displayValue: Double {
    get {
        return Double(display.text!)!
    }
    set {
        display.text = String(newValue)
    }
}

この計算型プロパティを用意することで次のメソッド

@IBAction func performOperation(sender: UIButton) {
   userIsInTheMiddleOfTyping = false
    if let mathematicalSymbol = sender.currentTitle {
        if mathematicalSymbol == "π" {
            display.text = String(M_PI)
        }
    }
}

次のようになります。

@IBAction func performOperation(sender: UIButton) {
   userIsInTheMiddleOfTyping = false
    if let mathematicalSymbol = sender.currentTitle {
        if mathematicalSymbol == "π" {
            displayValue = M_PI
        }
    }
}

かなり可読性が向上しました。

今日はここまで。

*1:日本語版も公開されているので随分と取り組みやすくなってますね→Swiftで遊ぼう! - 634 - The Swift Programming Language日本語版 - Swiftで遊ぼう! on Hatena