內容簡介
本書是iOS開發傑出指南,分5部分講解如何從零起步編寫並上線iOS套用。首部分介紹iOS開發基礎知識,包括界面構建技術、基本控制項、協定、表視圖、螢幕適配、導航、分屏多任務等。第 二部分介紹設計與架構的相關知識,包括設計模式、分層模式、本地
數據持久化等。第三部分為進階篇,包括設定與配置、本地化、Contacts與ContactsUI框架、數據交換格式、Web Service、定位服務、蘋果地圖等內容。第四部分介紹測試、調試和最佳化等相關知識。第五部分為實戰篇,涵蓋代碼版本管理、項目依賴管理、App Store發布流程,以及兩個真實iOS套用的分析設計、編程、測試與分布過程。本書同時提供Swift和Objective-C兩版代碼。
本書適合所有iOS開發人員學習參考。
圖書目錄
第 一部分 基 礎 篇
第 1章 開篇綜述 2
1.1 iOS概述 2
1.1.1 iOS介紹 2
1.1.2 iOS 9新特性 2
1.2 開發環境及開發工具 3
1.3 本書約定 4
1.3.1 案例代碼約定 4
1.3.2 圖示的約定 5
1.3.3 方法命名約定 6
1.3.4 構造函式命名約定 7
1.3.5 錯誤處理約定 8
第 2章 第 一個iOS應用程式 10
2.1 創建HelloWorld工程 10
2.1.1 創建工程 10
2.1.2 Xcode中的iOS工程模板 14
2.1.3 套用剖析 15
2.2 套用生命周期 17
2.2.1 非運行狀態——套用啟動場景 19
2.2.2 點擊Home鍵——套用退出場景 20
2.2.3 掛起重新運行場景 22
2.2.4 記憶體清除:套用終止場景 23
2.3 設定產品屬性 23
2.3.1 Xcode中的工程和目標 23
2.3.2 設定常用的產品屬性 26
2.4 iOS API簡介 27
2.4.1 API概述 27
2.4.2 如何使用API幫助 29
2.5 小結 32
第3章 Cocoa Touch框架與構建套用界面 33
3.1 視圖控制器 33
3.1.1 視圖控制器種類 33
3.1.2 視圖的生命周期 33
3.2 視圖 35
3.2.1 UIView繼承層次結構 35
3.2.2 視圖分類 37
3.2.3 套用界面構建層次 37
3.3 使用故事板構建界面 38
3.3.1 什麼是故事板 39
3.3.2 場景和過渡 41
3.4 使用XIB檔案構建界面 42
3.4.1 重構HelloWorld 42
3.4.2 XIB與故事板比較 45
3.5 使用純代碼構建界面 45
3.5.1 重構HelloWorld 46
3.5.2 視圖的幾個重要屬性 47
3.6 3種構建界面技術討論 49
3.6.1 所見即所得 49
3.6.2 原型驅動開發 49
3.6.3 團隊協同開發 49
3.7 小結 50
第4章 UIView與視圖 51
4.1 標籤與按鈕 51
4.1.1 Interface Builder實現 51
4.1.2 代碼實現 55
4.2 事件處理 56
4.2.1 Interface Builder實現 56
4.2.2 代碼實現 59
4.3 訪問視圖 60
4.3.1 Interface Builder實現 60
4.3.2 代碼實現 62
4.4 TextField和TextView 63
4.4.1 Interface Builder實現 64
4.4.2 代碼實現 65
4.4.3 鍵盤的打開和關閉 67
4.4.4 關閉和打開鍵盤的通知 68
4.4.5 鍵盤的種類 69
4.5 開關控制項、分段控制項和滑塊控制項 70
4.5.1 開關控制項 71
4.5.2 分段控制項 72
4.5.3 滑塊控制項 74
4.6 Web視圖:WKWebView類 76
4.7 警告框和操作表 80
4.7.1 UIAlertController實現警告框 81
4.7.2 UIAlertController實現操作表 83
4.8 等待相關的控制項與進度條 84
4.8.1 活動指示器ActivityIndicatorView 85
4.8.2 進度條ProgressView 87
4.9 工具列和導航欄 90
4.9.1 工具列 90
4.9.2 導航欄 94
4.10 小結 98
第5章 委託協定、數據源協定與高 級視圖 99
5.1 視圖中的委託協定和數據源協定 99
5.2 選擇器 99
5.2.1 日期選擇器 99
5.2.2 普通選擇器 104
5.2.3 數據源協定與委託協定 109
5.3 集合視圖 111
5.4 實例:Interface Builder實現奧運會比賽
項目 112
5.4.1 添加集合視圖 113
5.4.2 添加集合視圖單元格 114
5.4.3 數據源協定與委託協定 118
5.5 實例:代碼實現奧運會比賽項目 120
5.5.1 添加集合視圖 120
5.5.2 自定義集合視圖單元格 122
5.6 小結 123
第6章 表視圖 124
6.1 概述 124
6.1.1 表視圖的組成 124
6.1.2 表視圖的相關類 125
6.1.3 表視圖分類 125
6.1.4 單元格的組成和樣式 127
6.1.5 數據源協定與委託協定 129
6.2 簡單表視圖 129
6.2.1 實現協定方法 130
6.2.2 UIViewController根視圖控制器 130
6.2.3 UITableViewController根視圖
控制器 137
6.3 自定義表視圖單元格 140
6.3.1 Interface Builder實現 141
6.3.2 代碼實現 145
6.4 添加搜尋欄 146
6.5 分節表視圖 150
6.5.1 添加索引 150
6.5.2 分組 153
6.6 靜態表與界面布局 154
6.7 插入和刪除單元格 160
6.7.1 Interface Builder實現 162
6.7.2 代碼實現 167
6.8 移動單元格 169
6.9 表視圖UI設計模式 171
6.9.1 分頁模式 171
6.9.2 下拉刷新模式 171
6.9.3 下拉刷新控制項 172
6.10 小結 174
第7章 界面布局與螢幕適配 175
7.1 界面布局概述 175
7.2 iOS界面布局設計模式 176
7.2.1 表單布局模式 176
7.2.2 列表布局模式 176
7.2.3 格線布局模式 177
7.3 傳統布局技術 177
7.4 Auto Layout布局技術 179
7.4.1 Interface Builder中管理Auto Layout
約束 179
7.4.2 實例:Auto Layout布局 180
7.5 iOS 9堆視圖StackView 185
7.5.1 堆視圖與布局 185
7.5.2 實例:堆視圖布局 186
7.6 iOS 螢幕的多樣性 191
7.6.1 iOS螢幕介紹 191
7.6.2 iOS的3種解析度 192
7.6.3 獲得iOS設備螢幕信息 193
7.7 Size Class與iOS多螢幕適配 194
7.7.1 Interface Builder中使用Size Class 195
7.7.2 Size Class的九宮格 195
7.7.3 實例:使用Size Class 196
7.8 資源與圖片資源適配 201
7.9 小結 204
第8章 視圖控制器與導航模式 205
8.1 概述 205
8.1.1 視圖控制器的種類 205
8.1.2 導航模式 205
8.2 模態視圖 207
8.2.1 Interface Builder實現 208
8.2.2 代碼實現 214
8.3 平鋪導航 215
8.3.1 套用場景 215
8.3.2 基於分屏導航的實現 217
8.3.3 基於電子書導航的實現 223
8.4 標籤導航 228
8.4.1 套用場景 229
8.4.2 Interface Builder實現 230
8.4.3 代碼實現 234
8.5 樹形結構導航 235
8.5.1 套用場景 235
8.5.2 Interface Builder實現 236
8.5.3 代碼實現 244
8.6 組合使用導航模式 245
8.6.1 套用場景 246
8.6.2 Interface Builder實現 246
8.6.3 代碼實現 254
8.7 小結 257
第9章 iPad套用開發 258
9.1 iPad與iPhone套用開發的差異 258
9.1.1 套用場景不同 258
9.1.2 導航模式不同 258
9.1.3 API不同 258
9.2 iPad樹形結構導航 259
9.2.1 郵件套用中的樹形結構導航 259
9.2.2 Master-Detail應用程式模板 260
9.2.3 Interface Builder實現SplitViewSample案例 266
9.2.4 代碼實現SplitViewSample案例 270
9.3 iPad模態視圖 273
9.3.1 郵件套用中的模態導航 273
9.3.2 iPad模態導航相關API 275
9.3.3 Interface Builder實現ModalView-
Sample案例 277
9.3.4 代碼實現ModalViewSample案例 281
9.4 Popover(浮動層)視圖 284
9.4.1 Popover相關API 284
9.4.2 PopoverViewSample案例 285
9.5 iOS 9分屏多任務 289
9.5.1 Slide Over多任務 289
9.5.2 分屏視圖多任務 290
9.5.3 畫中畫多任務 293
9.6 iPad分屏多任務適配開發 293
9.6.1 分屏多任務前提條件 293
9.6.2 分屏多任務適配 294
9.7 小結 295
第 二部分 設計與架構篇
第 10章 iOS常用設計模式 298
10.1 單例模式 298
10.1.1 問題提出 298
10.1.2 Objective-C實現原理 298
10.1.3 Swift實現原理 299
10.1.4 套用案例 300
10.2 委託模式 301
10.2.1 問題提出 301
10.2.2 實現原理 303
10.2.3 套用案例 306
10.3 觀察者模式 309
10.3.1 問題提出 309
10.3.2 實現原理 310
10.3.3 通知機制和KVO機制 311
10.4.1 MVC模式概述 317
10.4.2 Cocoa Touch中的MVC模式 318
10.5 小結 320
第 11章 iOS分層架構設計 321
11.1 低耦合企業級系統架構設計 321
11.2 iOS分層架構設計 322
11.2.1 工程與工作空間 322
11.2.3 框架 323
11.2.4 16種分層模式 324
11.3 實例:MyNotes套用 325
11.4 基於同一工程的分層 327
11.4.1 採用純Swift語言實現:PSSS
模式 327
11.4.2 採用純Objective-C語言實現:
POOO模式 330
11.4.3 採用Swift調用Objective-C的
混合搭配實現:PSOO模式 334
11.5 基於同一工作空間
靜態程式庫實現的WLSOO
模式 335
11.5.1 使用工作空間 335
11.5.3 建立業務邏輯層與數據持久層依賴
關係 337
11.5.4 建立表示層與業務邏輯層依賴
關係 339
11.6 基於同一工作空間框架實現的WFSSS
模式 339
11.6.1 創建框架工程 340
11.6.2 建立依賴關係 341
11.6.3 代碼重構 342
11.7 基於同一工作空間框架實現的WFOOO
模式 344
11.7.1 設定Public頭檔案 344
11.7.2 設定保護傘頭檔案 345
11.7.3 代碼重構 345
11.8 基於同一工作空間框架實現的WFSOO
模式 346
11.8.1 設定Public頭檔案 346
11.8.2 設定保護傘頭檔案 346
11.8.3 建立表示層與業務邏輯層依賴
關係 346
11.8.4 代碼重構 346
11.9 基於同一工作空間框架實現的WFOSS
模式 346
11.9.1 設定Public頭檔案 346
11.9.2 設定Swift代碼嵌入套用 347
11.9.3 代碼重構 347
11.10 基於同一個工程不同目標框架實現的
TFSOO模式 348
11.10.1 使用目標 348
11.10.2 添加框架目標 348
11.11 小結 349
第 12章 數據持久化 350
12.1 概述 350
12.1.1 沙箱 350
12.1.2 持久化方式 351
12.2 屬性列表 351
12.3 對象歸檔 357
12.4 使用SQLite資料庫 361
12.4.1 SQLite數據類型 361
12.4.2 配置Objective-C框架工程環境 362
12.4.3 配置Swift框架工程環境 362
12.4.4 創建資料庫 364
12.4.5 查詢數據 365
12.4.6 修改數據 368
12.5 Core Data 370
12.5.1 ORM 370
12.5.2 Core Data棧 371
12.5.3 建模和生成實體 374
12.5.4 採用Core Data分層架構設計 380
12.5.5 查詢數據 382
12.5.6 修改數據 384
12.6 小結 385
第三部分 進 階 篇
第 13章 應用程式設定 388
13.1 概述 388
13.1.1 設定 388
13.1.2 配置 389
13.2 應用程式設定包 390
13.3 設定項目種類 392
13.3.1 文本欄位 395
13.3.2 開關 398
13.3.3 滑塊 399
13.3.4 值列表 400
13.3.5 子界面 401
13.4 讀取設定 403
13.5 小結 405
第 14章 本地化 406
14.1 概述 406
14.1.1 需要本地化的內容 406
14.1.2 本地化結構 409
14.2 文本信息本地化 410
14.2.1 系統按鈕和信息本地化 410
14.2.2 套用名稱本地化 411
14.2.3 程式代碼輸出的靜態文本本地化 413
14.2.4 使用genstring工具 414
14.3 故事板和XIB檔案本地化 415
14.3.1 使用Base Internationalization技術 415
14.3.2 Auto Layout與本地化 417
14.4 資源檔案本地化 419
14.4.1 圖片資源檔案本地化 419
14.4.2 聲音資源檔案本地化 420
14.5 小結 421
第 15章 iOS 9中訪問通訊錄 422
15.1 通訊錄的安全訪問設定 422
15.2 使用Contacts框架讀取聯繫人信息 423
15.2.1 查詢聯繫人 423
15.2.2 讀取單值屬性 426
15.2.3 讀取多值屬性 428
15.2.4 讀取圖片屬性 430
15.3 使用Contacts框架寫入聯繫人信息 430
15.3.1 創建聯繫人 431
15.3.2 修改聯繫人 433
15.3.3 刪除聯繫人 434
15.4 使用系統提供界面 435
15.4.1 選擇聯繫人 435
15.4.2 顯示和修改聯繫人 438
15.4.3 創建聯繫人 441
15.5 小結 444
第 16章 數據交換格式 445
16.1 XML數據交換格式 446
16.1.1 XML文檔結構 446
16.1.2 解析XML文檔 447
16.2 實例:MyNotes套用XML 448
16.2.1 使用NSXML解析 450
16.2.2 使用TBXML解析 453
16.3 JSON數據交換格式 459
16.3.1 JSON文檔結構 459
16.3.2 JSON數據編碼/解碼 460
16.4 實例:MyNotes套用JSON解碼 461
16.5 小結 462
第 17章 REST Web Service 463
17.1 概述 463
17.2 使用NSURLSession 464
17.2.1 NSURLSession API 464
17.2.2 簡單會話實現GET請求 465
17.2.3 默認會話實現GET請求 468
17.2.4 實現POST請求 469
17.2.5 下載數據 470
17.3 實例:使用NSURLSession重構MyNotes
案例 473
17.3.1 插入方法調用 473
17.3.2 修改方法調用 474
17.3.3 刪除方法調用 475
17.4 使用AFNetworking框架 477
17.4.1 比較ASIHTTPRequest、
AFNetworking和MKNetworkKit 477
17.4.2 安裝和配置AFNetworking框架 478
17.4.3 實現GET請求 479
17.4.4 實現POST請求 480
17.4.5 下載數據 481
17.4.6 上傳數據 482
17.5 使用為Swift設計的網路框架:
Alamofire 484
17.5.1 安裝和配置Alamofire框架 484
17.5.2 實現GET請求 485
17.5.3 實現POST請求 486
17.5.4 下載數據 487
17.5.5 上傳數據 488
17.6 反饋網路信息改善用戶體驗 489
17.6.1 使用下拉刷新控制項改善用戶體驗 489
17.6.2 使用活動指示器控制項 492
17.6.3 使用網路活動指示器 494
17.7 小結 494
第 18章 定位服務 495
18.1 定位服務概述 495
18.1.1 定位服務編程 496
18.1.2 測試定位服務 499
18.2 管理定位服務 503
18.2.1 套用啟動與停止下的定位服務
管理 504
18.2.2 視圖切換下的定位服務管理 504
18.2.3 套用前後台切換下的定位服務
管理 505
18.2.4 設定自動暫停位置服務 507
18.2.5 iOS 9後台位置服務管理 507
18.3 地理信息編碼與反編碼 508
18.3.1 地理信息反編碼 508
18.3.2 實例:地理信息反編碼 509
18.3.3 地理信息編碼查詢 510
18.3.4 實例:地理信息編碼查詢 510
18.4 微定位技術iBeacon 512
18.4.1 微定位與地理圍欄 512
18.4.2 iBeacon技術概述 512
18.4.3 實例:使用iBeacon技術實現微
定位 513
18.5 小結 519
第 19章 蘋果地圖套用 520
19.1 使用iOS蘋果地圖 520
19.1.1 顯示地圖 520
19.1.2 顯示3D地圖 524
19.2 添加標註 525
19.2.1 實現查詢 526
19.2.2 在地圖上添加標註 528
19.3 跟蹤用戶位置變化 529
19.4 使用程式外地圖 530
19.5 小結 533
第四部分 測試、調試和最佳化篇
第 20章 找出程式中的bug——調試 536
20.1 Xcode調試工具 536
20.1.1 定位編譯錯誤 536
20.1.2 查看和顯示日誌 537
20.1.3 設定和查看斷點 539
20.1.4 調試工具 544
20.1.5 輸出視窗 545
20.1.6 變數查看視窗 546
20.1.7 查看執行緒 547
20.2 LLDB調試工具 548
20.2.1 斷點命令 548
20.2.2 觀察點命令 550
20.2.3 查看變數和計算表達式命令 552
20.3 日誌與斷言輸出 554
20.3.1 使用NSLog函式 554
20.3.2 使用斷言 555
20.4 異常棧報告分析 556
20.4.1 跟蹤異常棧 556
20.4.2 分析棧報告 558
20.5 在iOS設備上調試 559
20.5.1 Xcode設定 559
20.5.2 設備設定 560
20.6 Xcode設備管理工具 562
20.6.1 查看設備上的應用程式 562
20.6.2 設備日誌 564
20.7 小結 564
第 21章 iOS測試驅動與單元測試 565
21.1 測試驅動的軟體開發概述 565
21.1.1 測試驅動的軟體開發流程 565
21.1.2 測試驅動的軟體開發案例 566
21.1.3 iOS單元測試框架 567
21.2 使用XCTest測試框架 568
21.2.1 添加XCTest到工程 568
21.2.2 Swift版本中設定編譯目標成員 570
21.2.3 編寫XCTest測試方法 570
21.2.4 運行測試用例目標 573
21.2.5 分析測試報告 575
21.3 異步單元測試 576
21.4 性能測試 580
21.4.1 Swift版本中配置測試環境 580
21.4.2 測試用例代碼 580
21.4.3 分析測試結果 581
21.5 iOS單元測試最佳實踐 583
21.5.2 編寫數據持久層測試用例 584
21.5.3 運行測試數據持久層測試用例 587
21.5.4 配置測試業務邏輯層 588
21.5.5 編寫業務邏輯層測試用例 588
21.6 小結 589
第 22章 iOS套用UI測試 590
22.1 UI測試概述 590
22.2 添加UI測試到工程 590
22.2.1 創建工程時添加UI測試框架 590
22.2.2 在現有工程中添加UI測試用例
目標 591
22.3 錄製腳本 593
22.3.1 錄製之前的準備 593
22.3.2 錄製過程 593
22.3.3 修改錄製腳本 595
22.4 訪問UI元素 595
22.4.1 UI元素層次結構樹 595
22.4.2 UI測試中相關API 597
22.5 表示層測試最佳實踐 598
22.5.1 配置UI測試用例目標 598
22.5.2 編寫UI測試用例 599
22.6 小結 602
第 23章 讓你的程式“飛”起來——性能
最佳化 603
23.1 記憶體最佳化 603
23.1.1 記憶體管理 603
23.1.2 使用Analyze工具檢查記憶體泄漏 603
23.1.3 使用Instruments工具檢查記憶體
泄漏 608
23.1.4 使用Instruments工具檢查殭屍
對象 612
23.1.5 autorelease的使用問題 615
23.1.6 回響記憶體警告 616
23.2 最佳化資源檔案 617
23.2.1 圖片檔案最佳化 618
23.2.2 音頻檔案最佳化 619
23.3 延遲載入 620
23.3.1 資源檔案的延遲載入 620
23.3.2 故事板檔案的延遲載入 624
23.3.3 XIB檔案的延遲載入 626
23.4 數據持久化的最佳化 628
23.4.1 使用檔案 628
23.4.2 使用SQLite資料庫 631
23.4.3 使用Core Data 632
23.5 可重用對象的使用 634
23.5.1 表視圖中的可重用對象 635
23.5.2 集合視圖中的可重用對象 636
23.5.3 地圖視圖中的可重用對象 638
23.6.1 主執行緒阻塞問題 638
23.6.2 選擇NSThread還是GCD 639
23.7 小結 640
第五部分 實 戰 篇
第 24章 管理好你的程式代碼——代碼版本
控制 642
24.1 概述 642
24.1.1 版本控制歷史 642
24.1.2 基本概念 643
24.2 Git代碼版本控制 643
24.2.1 伺服器搭建 643
24.2.2 Gitolite伺服器管理 645
24.2.3 Git常用命令 647
24.2.4 Git分支 649
24.2.5 Git協同開發 653
24.2.6 Xcode中Git的配置與使用 656
24.3 GitHub代碼託管服務 663
24.3.1 創建和配置GitHub賬號 663
24.3.2 創建代碼庫 666
24.3.3 刪除代碼庫 668
24.3.4 派生代碼庫 669
24.3.5 使用GitHub協同開發 671
24.3.6 管理組織 677
24.4 小結 680
第 25章 項目依賴管理 681
25.1 使用CocoaPods工具管理依賴 681
25.1.1 安裝CocoaPods 681
25.1.2 搜尋庫 682
25.1.3 項目與第三方庫搭配形式 683
25.1.4 示例:靜態程式庫形式管理依賴 684
25.1.5 示例:框架形式管理依賴 686
25.2 使用Carthage工具管理依賴 687
25.2.1 安裝Carthage 688
25.2.2 項目與第三方庫搭配形式 688
25.2.3 Cartfile檔案 688
25.2.4 示例:重構MyNotes依賴關係 689
25.3 小結 691
第 26章 重構MyNotes套用——iOS網路
通信中的設計模式與架構設計 692
26.1 行動網路通信套用的分層架構設計 692
26.2 Objective-C版本:在數據持久層中添加和
配置AFNetworking 693
26.2.1 用CocoaPods工具管理依賴 693
26.2.2 測試依賴 693
26.3 Swift版本:在數據持久層中添加和配置
Alamofire 694
26.3.1 用Carthage工具管理依賴 694
26.3.2 測試依賴 695
26.4 基於委託模式實現 695
26.4.1 網路通信與委託模式 696
26.4.2 在異步網路通信中使用委託模式
實現分層架構設計 696
26.4.3 類圖 697
26.4.4 時序圖 699
26.4.5 數據持久層重構(Objective-C
版本) 702
26.4.6 數據持久層重構(Swift版本) 705
26.4.7 業務邏輯層的代碼實現 707
26.4.8 表示層的代碼實現 710
26.5 基於觀察者模式的通知機制實現 716
26.5.1 觀察者模式的通知機制回顧 716
26.5.2 異步網路通信中通知機制的分層架
構設計 716
26.5.3 類圖 717
26.5.4 時序圖 719
26.5.5 數據持久層重構(Objective-C
版本) 722
26.5.6 數據持久層重構(Swift版本) 723
26.5.7 業務邏輯層的代碼實現 725
26.5.8 表示層的代碼實現 726
26.6 小結 731
第 27章 把你的套用放到App Store上 732
27.1 收官 732
27.1.1 在Xcode 中添加圖示 732
27.1.2 在Xcode中添加啟動界面 734
27.1.3 調整Identity和Deployment Info
屬性 738
27.2 為發布進行編譯 739
27.2.1 創建開發 者證書 739
27.2.2 創建App ID 744
27.2.3 創建描述檔案 745
27.2.4 發布編譯 748
27.3 發布上架 750
27.3.1 創建套用 750
27.3.2 套用定價 753
27.3.3 基本信息輸入 754
27.3.4 上傳套用 757
27.3.5 提交審核 759
27.4 常見審核不通過的原因 761
27.4.1 功能問題 761
27.4.2 用戶界面問題 761
27.4.3 商業問題 761
27.4.4 不當內容 761
27.4.5 其他問題 762
27.5 小結 762
第 28章 iOS敏捷開發項目實戰——2016里
約熱內盧奧運會套用開發及App Store發布 763
28.1 套用分析與設計 763
28.1.1 套用概述 763
28.1.2 需求分析 763
28.1.3 原型設計 764
28.1.5 架構設計 766
28.2 iOS敏捷開發 766
28.2.1 敏捷開發宣言 766
28.2.2 iOS適合敏捷開發? 767
28.2.3 iOS敏捷開發最佳實踐 767
28.3 任務1:創建套用工作空間和工程 769
28.3.1 疊代1.1:創建工作空間 769
28.3.2 疊代1.2:發布到GitHub 769
28.4 任務2:信息系統層與持久層開發 770
28.4.1 疊代2.1:編寫資料庫DDL腳本 770
28.4.2 疊代2.2:插入初始數據到資料庫 770
28.4.3 疊代2.3:資料庫版本控制 771
28.4.4 疊代2.4:配置持久層工程PersistenceLayer 771
28.4.5 疊代2.5:編寫實體類 772
28.4.6 疊代2.6:編寫DAO類單元測試用例類 773
28.4.7 疊代2.7:編寫DAO類 775
28.4.8 疊代2.8:資料庫幫助類DBHelper 779
28.4.9 疊代2.9:配置及運行持久層測試用例目標 781
28.4.10 疊代2.10:發布到GitHub 782
28.5 任務3:業務邏輯層開發 782
28.5.1 疊代3.1:比賽項目業務邏輯類
XCTest單元測試 783
28.5.2 疊代3.2:編寫比賽項目業務
邏輯類 784
28.5.3 疊代3.3:比賽日程業務邏輯類
XCTest單元測試 785
28.5.4 疊代3.4:編寫比賽日程業務
邏輯類 786
28.5.5 疊代3.5:發布到GitHub 787
28.6 任務4:表示層開發 788
28.6.1 疊代4.1:使用資源管理圖片和圖示資源 788
28.6.2 疊代4.2:根據原型設計初步設計
故事板 789
28.6.3 疊代4.3:“首頁”模組 790
28.6.4 疊代4.4:“比賽項目”模組 791
28.6.5 疊代4.5:“比賽日程”模組 795
28.6.6 疊代4.6:“倒 計時”模組
表示層 797
28.6.7 疊代4.7:“關於我們”模組
表示層 800
28.6.8 疊代4.8:發布到GitHub 800
28.7 任務5:收工 800
28.7.1 疊代5.1:添加圖示 800
28.7.2 疊代5.2:設計和添加啟動界面 801
28.7.3 疊代5.3:性能測試與改善 801
28.7.4 疊代5.4:發布到GitHub上 802
28.7.5 疊代5.5:在App Store上發布
套用 802
28.8 小結 802