Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 667 - Course Overview and Introduction to iOS, Xcode, and Swift 3

まだ講義1をまとめているのですが、濃密な内容なのでかなり勉強になります。Calculatorデモでdigitボタンを押して、ラベルに数字を表示させるところまでできました。

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

1つ問題にあたりました。数字を入力すると最初に表示されていた「0」が残ってしまいます。これを消去するためにタイプのタイミングか始まりなのか途中か判断する変数を用意します。

var userIsInTheMiddleOfTyping = false

変数名が長いので教室から笑いが起きました。しかし、こういう長い変数名はコードの可読性を上げるために重要だという説明があります。コンピュータサイエンスではリーダブルコードが重要です。それにXcodeの補完機能が効いているので変数名の長さは問題にならないからです。

ここで条件文「if」を使ってタイピングの途中かどうかを判定してdisplay!.text*1に入力する内容を変更したところで、昨日問題になっていたオプショナル型宣言時の「?」と「!」の使い分けの説明をします。@IBOutletプロパティのように必ず実体が存在するプロパティを「?」で宣言してしまうと、利用時に毎回「!」を付けて使う煩わしさが残ってしまいます。こういう場合最初に「!」を付けて宣言してやれば、そのままプロパティを利用できるということです。

昨日書いたコードは次のようになりました。

@IBOutlet weak var display: UILabel!
    
var userIsInTheMiddleOfTyping = false

@IBAction func touchDigit(sender: UIButton) {
    let digit = sender.currentTitle!
    if userIsInTheMiddleOfTyping {
        let textCurrentlyInDisplay = display.text!
        display.text = textCurrentlyInDisplay + digit
    } else {
        display.text = digit
    }
    userIsInTheMiddleOfTyping = true
}

これでランすると「0」が消えました。
f:id:yataiblue:20160508164111j:plain
ここまでで講義の残り時間が5分少々。しかしまだまだ続きます。ここから関数ボタンを設置するんです。

*1:「!」というオプショナルがまだついています。