2017年3月24日現在

正誤表 これからつくるiPhoneアプリ開発入門～Swiftではじめるプログラミングの第一歩～［Swift3/Xcode8対応］
本書において下記のとおり、誤りがございました。
内容を訂正すると共に、読者の皆様にご迷惑をおかけしたことを、深くお詫び申し上げます。
恐れ入りますが、本正誤表をご確認の上、ご利用いただきますようお願い申し上げます。
赤字​が修正箇所になります。

ixページ 目次 Lesson 4 3-4【誤】4 Table View Cellの［Style］と［Indentifier］を設定【正】4 Table View Cellの［Style］と［​Identifier​］を設定

P.16 ページ下部のTips【誤】Apple すべてのサービスで使う【正】Apple ​のす​ べてのサービスで使う

P.37 2-2【誤】「制約」 (Constrain)と呼びます。
【正】「制約」 (Constrain​t​)と呼びます。

P.48 5-3 ③【誤】発生していのが【正】発生してい​るの​ がP.69【誤】「制約」（Constrain）という【正】「制約」（Constrain​t​）というP.71【誤】制約(Constrain)【正】制約(Constrain​t​)

P.77
事前の説明では、［Constrain to margins］のチェックをしていませんが、LabelのAutoLayout更新後の［Constrain to margins］のチェックされているレイアウトとなっていました。

【誤】

【正】

P.82
Xcode画面の構成箇所にてViewController.swiftがManualにて選択されていました。正しくはAutomaticです。

【誤】P.91 1-1 中段の③
【誤】見えるようします【正】見えるよう​にし​ ますP.100 1-5【誤】関数 (Function​s​)【正】関数 (Function)【正】P.163
Map Kit View関連付け操作画面②の枠線①及び②の位置が誤っていました。

【正】

【誤】

P.180 2-2 ②【誤】左下部へドラッグ&ドロップします。
【正】​右下部​へドラッグ&ドロップします。

P.182 2-3 ②【誤】今回は画面の左下部に配置します。
【正】今回は画面の​右下部​に配置します。

P.208
タイマー画面の本来は「秒数設定」となっている箇所が「Item」となっていました。

【誤】

【正】

P.232 5-2【誤】count += 1​;【正】count += 1

P.246
【誤】
5：UIPickerViewのDataSourceの​delegate​
メソッドを作成しよう【正】
5：UIPickerViewのDataSourceのメソッドを作成しよう

P.275
【誤】
UIImagePickerController.isSourceTypeAvailable()でカメラが利用できるのかを判定できます。
【正】
UIImagePickerController.isSourceTypeAvailable(​.camera​)でカメラが利用できるのかを判定できます。

P.312​(追加)【誤】1-5 画面遷移を実施【正】1-5 画面遷移を​実装

P.321
画像をシェアするソースコードの一部が印刷されていませんでした。

P.351
【誤】
let URL = Foundation.URL(string:"http://www.sysbird.jp/toriko/api/?apikey=guest&format=json&keyword=\(keyword_encode!)&max=10&order=r")
print(URL)【正】
let ​url = ​URL(string:"http://www.sysbird.jp/toriko/api/?apikey=guest&format=json&keyword=\(keyword_encode!)&max=10&order=r")
print(​url​)

P.356​(追加)【誤】
let req = URLRequest(url: URL!)【正】
let req = URLRequest(url: ​url​!)

P.364 1-2【誤】
print (“okashiList[0] = \(self.okashiList[0])”)【正】
print (“okashiList[0] = \(self.okashiList.​first​)”)2016年11月25日現在

改訂表 これからつくるiPhoneアプリ開発入門～Swiftではじめるプログラミングの第一歩～［Swift3/Xcode8対応］
書籍出版時は、Xcode8.0での動作確認を行っていますが、Xcodeのバージョンアップに伴い、サンプルコードに修正が必要になった場合にこの改訂表を更新してまいります。
ご利用のXcodeのバージョンをご確認の上、コードを書き換えてお試しください。

■変更内容
Xcode8.1から、オプショナル変数をそのままprint文で利用すると警告が表示されるようになりました。
■修正内容
P.167
【Xcode8.0】print(searchKeyword)【Xcode8.1】print(searchKeyword ?? "値が入っていません")

P349【Xcode8.0】print(searchBar.text)【Xcode8.1】print(searchBar.text ?? "値が入っていません")

P353【Xcode8.0】print(URL)【Xcode8.1】print(url ?? "値が入っていません")「??」は、値がnil（値がない）の場合に置き換える値を指定する方法です。
値が、nilの場合に「値が入っていません」とコンソールに出力するコードになります。

■変更内容​(追加)
Xcode8.1から、Buttonの関連付け際にIBActionの引数Typeが「AnyObject」から「Any」に変更となりました。

【Xcode8.0】【Xcode8.1】

・ AnyObjectとAnyの違い
AnyObjectは、全てのクラス型のインスタンス を扱うことが出来る型ですが、構造体（struct）,列挙型（ enum）, 関数（クロージャ）や、タプルはクラス型のインスタンスではないので、AnyObjectで扱うことはできません。
Anyは関数型も含め、全ての型のインスタンス を扱うことが出来る型で、構造体（struct）,列挙型（ enum）, 関数（クロージャ）も扱うことができます。

■変更内容
Xcode8.1から、AutoLayoutのボタン名称が変更になりました。
P.70の説明は以下のように変更となります。

AutoLayoutの4つのボタン
AutoLayoutの4つのボタンの役割
番号

ボタン名

できること

①

Stack(スタック)

パーツにまとめて制約を設定するときに使う②

Align(アライン)

パーツを中央に配置したり、左揃えで配置などの制約を設定③

Add New Constraints

パーツの高さや横幅、余白などの制約を設定④

Resolve Auto Layout Issues

不足している制約を自動的に設定したり、パーツを制約通りに表示する機能などがある

その他、書籍を通して、[Pin]と表記されている箇所は[Add New Constraints]に変更になります。

■変更内容実機転送を行うときにP.48 「5-3 Team(チーム)を設定します」の④手順を行うときに以下のエラーが発生した場合、P.49 「5-4 iPhineをXcodeから起動します」のデバイ
スの選択すると解決します。
Failed to create provisioning profile.
There are no devices registered in your account on the developer website.
Plug in and select a device to have Xcode register it.

以上