Swift 1.2ではシンタックスエラーとなりビルドできなくなった箇所があります。「詳細!Swift iPhoneアプリ開発入門ノート」で記載しているコードだけでなく、テンプレートが作成するファイルにも変更箇所があります。
サポートサイトからダウンロードできるサンプルファイルは、すべてSwift 1.2対応版です。
修正更新方法:
多くの場合はシンタックスエラーが出た箇所にFixのコードが表示されます。一部を除いて、ダブルクリックして更新すれば解決します。また、EditメニューのConvert > To Latest Swift Syntax...を実行することでもコードを一度に更新できます。
AppDelegate.swift
Xcode 6.0のテンプレートで作成されていたAppDelegate.swiftのコードがビルドできなくなりました。application()の引数の型が変更され、UIApplication!がUIApplicationになり、NSDictionary!が[NSObject: AnyObject]?になっています。
修正前:application: UIApplication!
修正後:application: UIApplication
修正前:launchOptions: NSDictionary!
修正後:launchOptions: [NSObject: AnyObject]?
Chapter 3-1
p.83 本文の下から2行目、リスト「ストリングの文字数」の2行目
修正前:let num = countElements
修正後:let num = count
Chapter4-1
p119、p121にあるMagicクラス内のコード
修正前:self.magicPower = countElements(spell)/2
修正後:self.magicPower = count(spell)/2
Chapter 5-1
p160 リスト「2つのイニシャライザをもつMyClassクラス」
修正前:
init (msg:String = "ハロー") {
self.msg = msg
}
修正後:
init (msg:String = "ハロー") {
self.msg = msg
self.name = nil
}
Chapter 5-4
p198 リスト「WhiteBox構造体の初期値を指定して作成する」の1行目
構造体でlet定義してあるプロパティは、構造体を作るタイミングに値を設定できなくなりました。本文での説明も違ってきます。
修正前:colorはletで定義してある定数ですが、... 変更できなくなります。
修正後:colorはletで定義してある定数なので作る際に値を指定しません。
修正前:var myBox = WhiteBox(width: 150, height: 200, color: "green")
修正後:var myBox = WhiteBox(width: 150, height: 200)
p203、p204 リスト「直線を定義する構造体」に追加
struct_Line_mutating/ViewController.swiftに構造体Pointの定義文を追加します。
追加するコード:
struct Point {
var v:Int
var h:Int
}
Chapter 6-4
p247 本文の下から2行目、リスト「AnyObject型のsenderを利用する」の4行目
型のダウンキャストでは as ではなく as! を指定するようになりました。
修正前:as
修正後:as!
Chapter 6-5
p266、p267 リスト「完成したViewControllerクラス」
UITextField!をUITextFieldに、String!をStringに変更します。
修正前: func textField(textField: UITextField!,
修正後:func textField(textField: UITextField,
修正前:replacementString string: String!) -> Bool {
修正後:replacementString string: String) -> Bool {
修正前:(textField: UITextField!) -> Bool {
修正後:(textField: UITextField) -> Bool {
p268 リスト「改行キーの入力でキーボードを下げる」
UITextField!をUITextFieldに変更します。
修正前:(textField: UITextField!) -> Bool {
修正後:(textField: UITextField) -> Bool {
Chapter 7-2
p287 NOTEのリスト「ルートビューの背景をパターン表示する」
修正前:UIColor(patternImage: image)
修正後:UIColor(patternImage: image!)
Chapter 7-3
p309の2つ目のリスト、p311の6行目、p318下から9行目、p320の最初のリスト、
修正前:as UITableViewCell
修正後:as! UITableViewCell
p318下から9行目、p320の最初のリスト、p322の下から1行目、p323の下から9行目
修正前:as TableViewCell
修正後:as! TableViewCell
Chapter 7-4
p333の下のリスト上から5行目、p335の15行目
修正前:as CollectionViewCell
修正後:as! CollectionViewCell
Chapter 8-3
p404最初のリスト、p405
修正前:as UITabBarItem
修正後:as! UITabBarItem
Chapter 9-1
SpriteKitテンプレートで作成されるGameScene.swiftとGameViewController.swiftに変更があり、そのままではビルドできません。該当コードを記載している箇所は以下の通りです。
p427 リストのtouchesBegan()メソッド定義
修正前:NSSet
修正後:Set<NSObject>
修正前:in touches
修正後:in (touches as! Set)
p428 リストの下から4行目
修正前:(file, ofType: "sks")
修正後:(file as String, ofType: "sks")
p429 リストの2行目、15行目
修正前:as GameScene
修正後:as! GameScene
修正前:as SKView
修正後:as! SKView
Chapter 9-4
p454、p456、p461 リストのtouchesBegan()メソッド定義
修正前:NSSet
修正後:Set<NSObject>
Chapter 9-5
p467、p469 リストのtouchesBegan()メソッド定義
修正前:NSSet
修正後:Set<NSObject>
Chapter 9-6
p481 リストのtouchesBegan()メソッド定義
修正前:NSSet
修正後:Set<NSObject>
修正前:as SKSpriteNode
修正後:as! SKSpriteNode
Chapter 9-7
p485、p492 リストのtouchesBegan()、touchesMoved()メソッド定義
修正前:NSSet
修正後:Set<NSObject>
Chapter 9-8
p500、p503 リストのtouchesMoved()メソッド定義
修正前:NSSet
修正後:Set<NSObject>