ストリングのインデックスを指し示すadvancedBy()ですが、執筆時はadvance()だったのがベータを重ねている間にバージョンアップが行われたようです。最終チェックで見落としてしまい申し訳ありませんでした。
該当箇所の記述とサンプルコードを以下のように訂正し、差し替えます。お手数をかけますが、よろしくお願いします。ごめんなさい。 m(_ _)m

Section4-2
p125 下の4行を差し替えます。
誤:
advance()を使うと〜方向になります。
正:
advancedBy()を使うとインデックスを前後に複数個移動できます。つまり、startIndexから5つ先、endIndexから3つ手前というようにインデックスを移動できます。引数が正のときに進める、負のときに戻る方向になります。

p.126のサンプルコード
[List]ストリングの途中の文字列を取り出す
[file]string_advance/ViewController.swift
誤:
// 先頭から5文字目
let index1 = advance(str.startIndex, 5)
// 末尾から4文字目
let index2 = advance(str.endIndex, -4)

正:
// 先頭から5文字目
let index1 = str.startIndex.advancedBy(5)
// 末尾から4文字目
let index2 = str.endIndex.advancedBy(-4)

サンプルのファイル名も次のように変更します。
誤:string_advance
正:string_advancedBy

[List]レンジ演算子を使ってストリングを取り出す
[file]string_range_operator/ViewController.swift
誤:
let start = advance(zero, 3)
let end = advance(zero, 6)

正:
let start = zero.advancedBy(3)
let end = zero.advancedBy(6)

[List]インデックスの手前/後ろのストリングを取り出す
[file]string_substringToFrom/ViewController.swift
誤:
let index = advance(str.startIndex, 5)

正:
let index = str.startIndex.advancedBy(5)

差し替えサンプルファイル
p126_sample.zip

▶Part 1 概要〜最初の話〜:ハローワールド
Chapter 1 はじめての Xcode
 1-1 iOS アプリ開発の準備 ... 10
 1-2 Xcode の使い方 ... 14
 1-3 iOS シミュレータで試す ... 21
 1-4 ハローワールド ... 27
 1-5 Playground で試す ... 35

▶Part 2 基礎知識 〜実力を蓄える〜:Swift のシンタックス
Chapter 2 基本シンタックス
 2-1 ステートメントとデバッグ関数 ... 44
 2-2 定数と変数 ... 51
 2-3 タプル ... 62
 2-4 演算子 ... 65
 2-5 条件で処理を分岐する if 文 ... 73
 2-6 値で処理を分岐する switch 文 ... 78
 2-7 処理を繰り返す for 文 ... 83
 2-8 条件が満たされている間繰り返す while 文 ... 88
 2-9 繰り返しのスキップや中断 ... 91

Chapter 3 関数、クロージャ
 3-1 関数を定義する ... 96
 3-2 引数がある関数 ... 98
 3-3 外部引数名を付ける ... 104
 3-4 関数の高度な利用 ... 108
 3-5 クロージャ 113

Chapter 4 ストリング
 4-1 ストリングを作る ... 118
 4-2 ストリングから文字を取り出す ... 123
 4-3 ストリングの比較と検索 ... 128

Chapter 5 配列 Array
 5-1 配列を作る ... 132
 5-2 配列の値の追加と削除 ... 136
 5-3 配列から値を取り出す ... 139

Chapter 6 辞書 Dictionary
 6-1 辞書を作る ... 144
 6-2 辞書の要素の追加と削除 ... 147
 6-3 辞書から値を取り出す ... 149

Chapter 7 オプショナル
 7-1 オプショナル 154
 7-2 オプショナルバリューがnil の場合に対応する ... 156

Chapter 8 クラス
 8-1 クラス定義 ... 162
 8-2 イニシャライザ ... 171
 8-3 Computed プロパティとプロパティオブザーバー ... 176
 8-4 クラスメンバー ... 181
 8-5 アクセス権 ... 186
 8-6 クラスの拡張 ... 189

Chapter 9 列挙型と構造体
 9-1 列挙型 enum ... 200
 9-2 列挙型にメソッドを実装する ... 207
 9-3 構造体 struct ... 210
 9-4 イニシャライザや関数がある構造体 ... 215

▶Part 3 実践入門〜作って学ぶ〜:iOS アプリを作る
Chapter 10 オートレイアウトとSize
 10-1 オートレイアウトとプレビュー画面 ... 222
 10-2 中心からの距離で位置を決める ... 230
 10-3 画面の辺からの距離を固定する ... 234
 10-4 写真をレイアウトする ... 238
 10-5 Constraints を修正する ... 244
 10-6 デバイスの回転、機種でレイアウトを変える 246

Chapter 11 アシスタントエディタとUI 部品の使い方
 11-1 アシスタントエディタを使う ... 252
 11-2 ラベルを使う UILabel クラス ... 263
 11-3 ボタンを使う UIButton クラス ... 271
 11-4 ステッパーを使う UIStepper クラス ... 281
 11-5 スイッチを使う UISwitch クラス ... 285
 11-6 選択肢ボタンを使う UISegmentedControl クラス ... 288
 11-7 スライダを使う UISlider クラス ... 293
 11-8 テキストフィールドを使う UITextField クラス ... 297
 11-9 ピッカービューを使う UIPickerView クラス ... 308
 11-10 UI 部品のクラス継承 ... 315

Chapter 12 ビューと画像
 12-1 ビューの作成と表示 ... 320
 12-2 画像表示とビューの重なり ... 330
 12-3 ビューの座標と領域 ... 337
 12-4 コードでConstraints を設定する ... 343
 12-5 スタックビューの活用 UIStackView クラス ... 359
 12-6 テーブルビュー UITableView クラス ... 366

Chapter 13 シーンの作成と移動
 13-1 シーンとビューコントローラ ... 374
 13-2 セグエでシーンを移動する ... 376
 13-3 コードを使ってシーンを移動する ... 384
 13-4 ナビゲーションコントローラで遷移する ... 389
 13-5 ナビゲーションコントローラとテーブルビュー ... 396
 13-6 タブバーでシーンを切り替える ... 408
 13-7 アラートを表示する ... 417
 13-8 アクションシートを表示する ... 424

Chapter 14 アニメーションと映像効果
 14-1 タイマーを使ったアニメーション ... 430
 14-2 イーズインアウトのアニメーション ... 433
 14-3 複数のアニメーションを合成する ... 439
 14-4 アニメーションを連結する ... 443
 14-5 イメージビューのコマ送りアニメーション ... 447
 14-6 サブビュー切り替えの映像効果 ... 452
 14-7 ビュー内容更新の映像効果 ... 457
 14-8 ブラー効果でぼかして表示する ... 462

Chapter 15 フィンガーアクション
 15-1 ジェスチャーレコグナイザの使い方 ... 468
 15-2 ダブルタップを認識する ... 474
 15-3 ビューをドラッグする ... 477
 15-4 2本の指でビューを回す ... 482

Chapter 16 図形の描画
 16-1 図形のカスタムビュークラスを作る ... 488
 16-2 図形を描画したイメージを作る ... 493
 16-3 楕円形を描く ... 497
 16-4 角丸四角形を描く ... 500
 16-5 直線を引く ... 503
 16-6 ベジェ曲線を引く ... 509
 16-7 円弧と扇形を描く ... 514
 16-8 図形の重なりの塗り ... 522

Chapter 17 データの保存と読み込み
 17-1 ユーザーデフォルトを利用する ... 528
 17-2 テキストファイルの保存と読み込み ... 538
 17-3 テキストビューをキーボードのサイズに合わせる ... 542

Chapter 18 デバイスの機能を使う
 18-1 オートローテーションと画面回転の制限 ... 550
 18-2 デバイスの回転と表/裏のイベント通知 ... 555
 18-3 カメラで写真撮影する ... 559
 18-4 スタンプ合成カメラを作る ... 566
 18-5 撮った写真をシェアする ... 573
 18-6 位置情報と方位コンパス ... 579
 18-7 地図を表示する ... 591
 18-8 地図で現在地をトラッキングする ... 599
 18-9 モーションセンサーの測定値を調べる ... 608

お待たせしました。Swift 2の入門ノートができました。

前著ではカバーしきれなかった内容を盛り込み、ページ数も624と大増ページです!

cover_photo340.jpg

詳細! Swift 2 iPhoneアプリ開発 入門ノート Swift 2 + Xcode 7対応

著者:大重美幸
体裁:B5変形・624ページ・2色
本体価格:3,180円+税
ISBN:978-4-8007-1116-8

今回、内容を再編成し、次の3つのパートに分けました。
 Part 1 概要 〜最初の話〜:ハローワールド
 Part 2 基礎知識 〜実力を蓄える〜:Swiftのシンタックス
 Part 3 実践入門 〜作って学ぶ〜:iOSアプリを作る

増ページでより詳しくなり、章とセクションを細かく整理分類したことでより読みやすくなりました。自分のレベルや目的に応じて、まさに飛ぶように自在に読みこなして欲しいと思います。

詳しい目次


Apple Watchアプリ開発の本を書きました。
Apple Watchが手元に来てそろそろ1ヶ月。グランスや通知はもちろんのこと、Apple WatchとiPhoneの実機を使って確かめないとわからなかったこと、気付かなかったことがたくさんありました。
ローカル通知、iOSアプリとの連携、HandoffなどiOSシミュレータだけでは試せない本当の動作についても解説しました。

▶︎絶賛予約受付中!6月6日発売です。よろしくお願いします (^_^)/

applewatch1008.jpg
詳細!Apple Watch アプリ開発入門ノート Swift1.2 + Xcode6.3対応

大重美幸 著
3,024円(税込)、368ページ
サンプル数124本(サポートサイトからダウンロード)
ソーテック社

▶︎詳しい目次
Part 1 WatchKitアプリの基礎知識
1-1 はじめてのWatchKitアプリ
1-2 WatchKitアプリの仕組み

Part 2 インターフェースオブジェクト
2-1 画面のレイアウト
2-2 Button ボタンを使う
2-3 Switch オン/オフのスイッチ
2-4 Slider スライダを使う
2-5 Label テキストを表示する
2-6 Date 日時を表示する
2-7 Timer 時間の経過/カウントダウンタイマー
2-8 Image 画像データの準備と表示
2-9 Imageを使ったアニメーション
2-10 Map 地図を表示する
2-11 非表示、透明度、サイズ変更のアニメーション

Part 3 ページの作成と移動
3-1 Page-Basedナビゲーション
3-2 push/popナビゲーション
3-3 modalナビゲーション

Part 4 テキスト入力とメニュー
4-1 テキストインプットコントローラ
4-2 コンテキストメニュー

Part 5 テーブル
5-1 Table テーブルを作る
5-2 複数のRowタイプを使う
5-3 テーブルのデータをplistで作る
5-4 テーブルをページのメニューに使う

Part 6 グランス Glance
6-1 グランスを作る
6-2 後からグランスを追加する
6-3 グランスに現在値を表示する
6-4 グランスからアプリにアクションを受け渡す

Part 7 通知 Notification
7-1 通知画面を作る
7-2 Dynamic Notificationを表示する
7-3 通知で選んだアクションの処理
7-4 複数の通知カテゴリを使う
7-5 バックグラウンドでのローカル通知
7-6 フォアグラウンドでのローカル通知

Part 8 iOSアプリとの連携とHandoff
8-1 親アプリを呼び出す
8-2 App Groupの作成と設定
8-3 ユーザーデフォルトを使ってデータを共有する
8-4 ファイル保存を使ってテキストデータを共有する
8-5 Handoff

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>

Chapter 3-2 p92、下から2行目、3行目
配列の値の型を指定する書式で、配列名と型指定の間のコロンが抜けていました。
申し訳ありません (>_<)

誤:
let 配列名[値の型] = [値1, 値2, 値3]
var 配列名[値の型]

正:
let 配列名:[値の型] = [値1, 値2, 値3]
var 配列名:[値の型]

Chapter 3-3 p103、下から1行目、2行目
辞書のキーと値の型を指定する書式で、辞書名と型指定の間のコロンが抜けていました。
申し訳ありません (>_<)

誤:
let 辞書名[キーの型:値の型] = [キー1:値1, キー2:値2, キー3:値3]
var 辞書名[キーの型:値の型]

正:
let 辞書名:[キーの型:値の型] = [キー1:値1, キー2:値2, キー3:値3]
var 辞書名:[キーの型:値の型]

Chapter7-2 p286掲載のサンプルex_imageViewのViewController.swiftに掲載のコードが記述されていませんでした。書籍に掲載のコードには変更がありませんが、ex_imageViewプロジェクトファイルを差し替えます。次のファイルをダウンロードしてください。

ダウンロード→ex_imageView.zip

お手数ですが、よろしくお願いします。