Swiftで遊ぼう! - 666 - Course Overview and Introduction to iOS, Xcode, and Swift 2
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.3で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
ポール先生の話は勉強になります。
Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U
Calculatorデモの説明をしています。Main.storyboardに作った「5」ボタンをコピー&ペーストで増やして並べます。
これをシュミレーターでランしてボタンをタップすると、どれを押してもコンソールに「touchDigit」が表示されます。しかし、どのボタンが押されたか分かりません。senderのタイトルが分かれば区別できるはずです。そこでsenderのプロパティやメソッドを調べるためにDcumentation and API Referenceと「Opt + クリック」の使い方を説明があり、「currentTitle」というプロパティを探し出します。
sendder.currentTitleの値を保持する変数「var digit」を用意すると、「let」に変更するように警告されます。ここで「let」を使用することの重要性が説明されます。
コードの説明は続きます。次にSwiftで特徴的な「Optional」という型の説明になります。「not set」と「set」の違い、「set」の場合は「associated value」が存在するということで、「Optional("5"):[Optional型set]」と「5:[String型associated value]」は全く異なる型になります。associated valueを使用する場合は「アンラップ(!)」しなければなりません。メソッドは次のようなコードになりました。
@IBAction func touchDigit(sender: UIButton) { let digit = sender.currentTitle! print("touchef \(digit) digit") }
コンソールではなくラベルに表示するためにUILableをdigitボタンの上に設置してアトリビュートを変更します。ViewControllerに「Ctrl + ドラッグ」で繋ぐと、@IBActionと同様の@IB枕詞のついたプロパティが生成されます。しかしよく見ると宣言の最後に「!」がついていて「@IBOutlet weak var display: UILabel!」のようになっています。「!」と「?」はどちらも同じようにオプショナル型の宣言になります。この両者の違いを説明するためにポール先生は「?」に変更してコードを次のように書きました*1。
@IBOutlet weak var display: UILabel? @IBAction func touchDigit(sender: UIButton) { let digit = sender.currentTitle! let textCurrentlyInDisplay = display!.text! display!.text = textCurrentlyInDisplay + digit }
これをランすると次の様になります。
あれ?何かおかしいですね。頭の「0」が要りません。
今日はここまで。
*1:この説明は後ほど...また記事が公開された時にリンクします。