Android開発者のためのSwift入門

本書に一部誤りが見つかりましたので正誤表を掲載いたします。
ご迷惑をおかけしたことを深くおわび申し上げます。


ページ




42 ●表4.5の中の「indexForKey」の説明
末尾に要素を追加



要素のインデックスを取得
134 ●図7.16のキャプション
結果表示ビューの制約


Toolbarの制約
145 ●リスト 7.5 の22行目
mode = .Map
の行が文法エラーとなります。


後述しているP.168 のリスト7.33 に従って、ViewController.swiftファイルを編集してください。
ViewModeクラスとmode変数の宣言が追加され、文法エラーが解消されます。
145 ●本文下から9行目のセンテンス
MapViewControllerとTableViewControllerのインスタンスのルートビュー(mapViewController.view及びtableViewController.view)を、それぞれcontainerのサブビューとして登録しています(11 〜12行目)。


MapViewControllerとTableViewControllerのインスタンスのルートビュー(mapViewController.view及びtableViewController.view)を、それぞれcontainerのサブビューとして登録しています(18 〜19行目)。
150 リスト7.9 ShopModelクラス リスト7.9 MyAnnotationクラス
150 ●リスト 7.9 の17行目と21行目
「NSString!」は、「String!」が正しい。

17  func title() -> NSString! {
21  func subtitle() -> NSString! {






17  func title() -> String! {
21  func subtitle() -> String! {
157 ●リスト7.22の12行目
12 return shopList.count


12 return shopInfoList.count
158 ●リスト 7.22 の 28行目
28  let shopData = shopList[indexPath.row]


28  let shopData = shopInfoList [indexPath.row]
164 ●「7.12.1 店舗情報画面への遷移」の本文
店舗情報画面の実装ができましたので、その画面への遷移処理を実装しましょう(リスト7.28)。



店舗情報画面の実装ができましたので、その画面への遷移処理を実装しましょう(リスト7.28)。
ViewControllerの変数宣言に、shopList変数の宣言(01〜03行)を追加した後、presentShopViewController()を実装します。
164 ●リスト7.28の冒頭
01 func presentShopViewController(index: Int) {
02 // shopListがない、指定のindexがshopListに含まれる要素数を越える場合は何もしない

冒頭に次の3行を追加。

01 var tableViewController: TableViewController!
02
03 var shopList: [ShopModel]!

……


04 func presentShopViewController(index: Int) {
05 // shopListがない、指定のindexがshopListに含まれる要素数を越える場合は何もしない

(以下、行番号は「+3」でずれていきます。)
165 ●本文上から4行目
Controller位置情報取得処理に必要なプロパティを宣言しましょう(リスト7.29)。


Controller位置情報取得処理に必要なプロパティ宣言と位置情報の取得開始処理を行いましょう(リスト7.29)。
165 リスト7.29 位置情報取得処理用のプロパティ宣言
01 class ViewController: UIViewController, CLLocationManagerDelegate {
……
02 var mapViewController: MapViewController!
03 var tableViewController: TableViewController!
04
05 var locationManager: CLLocationManager!
06 var currentLocation: CLLocation?
……

リスト7.29 位置情報取得処理用のプロパティ宣言と位置情報取得開始処理
01 class ViewController: UIViewController, CLLocationManagerDelegate {
……
02  var mapViewController: MapViewController!
03  var tableViewController: TableViewController!
04
05  var locationManager: CLLocationManager!
06  var currentLocation: CLLocation?
……
07 override func viewDidLoad() {
……
08  // 地図表示が前面に出ているため、現在の表示モードを地図に設定
09  mode = .Map
10
11  // 位置情報取得開始
12  locationManager = CLLocationManager()
13  locationManager.delegate = self
14  locationManager.
startUpdatingLocation()
……
165 ●下から4行目
者は、位置情報取得が許可されていない場合や、屋内にいる場合など、位置情報を取得できないことがありうるためです。
次に、iOS 8に対応した位置情報取得の許可を求めるダイアログを表示する処理を記述し ます(リスト7.30)。


者は、位置情報取得が許可されていない場合や、屋内にいる場合など、位置情報を取得できないことがありうるためです。
viewDidLoad()に位置情報取得の開始処理(11〜14行)を追加します。LocationManager()のインスタンスを生成してlocationManagerに格納します。そして、locationManagerのdelegateにselfを設定しておき、startUpdatingLocation()で位置情報取得を開始します。
次に、iOS 8に対応した位置情報取得の許可を求めるダイアログを表示する処理を記述します(リスト7.30)。