3dwoo大學簡體電腦書店
iOS數據庫應用高級編程(第2版)
( 簡體 字)
作者:[美]Patrick Alessi 著 類別:1. -> 程式設計 -> 手機程式 -> iPhone
譯者:馮寶隆 譯
出版社:清華大學出版社iOS數據庫應用高級編程(第2版) 3dWoo書號: 40550
詢問書籍請說出此書號!
有庫存
NT售價: 300
出版日:7/10/2014
頁數:340
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302369561 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第Ⅰ部分 操作和顯示iPhone 和iPad 上的數據
第1 章 數據驅動應用程序介紹 3
1 1 創建一個簡單的數據驅動應用程序4
1 1 1 創建項目 4
1 1 2 添加UITableView 6
1 1 3 獲取數據 9
1 1 4 實現數據模型類9
1 1 5 顯示數據 12
1 2 深入研究 17
1 2 1 設計模式 17
1 2 2 讀取文本文件 18
1 3 前往下一章 18
第2 章 iOS 數據庫:SQLite 19
2 1 什么是SQLite 20
2 1 1 SQLite 庫 20
2 1 2 SQLite 和Core Data 20
2 2 創建一個簡單的數據庫 21
2 2 1 設計數據庫 22
2 2 2 創建數據庫 24
2 2 3 填充數據庫 26
2 2 4 可視化SQLite 數據庫的工具 30
2 3 連接到數據庫 32
2 3 1 啟動項目 33
2 3 2 模型類 35
2 3 3 DBAccess 類 37
2 3 4 參數化查詢 45
2 3 5 寫入數據庫 46
2 3 6 顯示目錄 47
2 3 7 查看產品詳情 49
2 4 前往下一章 53
第3 章 使用UITableView 顯示數據55
3 1 定制表視圖 55
3 1 1 表視圖單元格樣式 56
3 1 2 將子視圖添加到contentView 59
3 1 3 子類化UITableViewCell 63
3 2 實現區段和索引 69
3 3 實現搜索 76
3 4 優化表視圖性能 81
3 4 1 重新使用現有的單元格 82
3 4 2 不透明的子視圖 83
3 4 3 使用drawRect 自定義繪制單元格 84
3 4 4 配件視圖的用戶界面約定 84
3 5 前往下一章 85
第4 章 用戶界面元素 87
4 1 使用故事板創建界面 87
4 1 1 開始創建故事板示例應用程序 89
4 1 2 向故事板中添加Sub-detail 屏幕 90
4 1 3 向故事板中添加模態屏幕 90
4 2 使用分隔視圖控制器顯示主/從數據 91
4 2 1 UISplitViewController 簡介 92
4 2 2 UISplitViewControllerDelegate 協議 93
4 2 3 開始實現分隔視圖示例應用程序 94
4 2 4 創建Detail 界面 96
4 2 5 使用主/從視圖添加調查 97
4 3 在彈出窗口中顯示數據 103
4 3 1 創建InfoViewController 104
4 3 2 顯示UIPopoverController 105
4 4 手勢識別 106
4 4 1 UIGestureRecognizer 類 106
4 4 2 使用手勢識別器 107
4 5 文件共享支持111
4 5 1 在示例應用程序中啟用文件共享 111
4 5 2 序列化調查數據數組 112
4 5 3 反序列化并加載調查數據數組 113
4 5 4 共享數據 114
4 6 前往下一章 116
第Ⅱ部分 使用Core Data 管理數據
第5 章 Core Data 介紹 119
5 1 Core Data 基礎 120
5 2 Core Data 架構 120
5 2 1 Core Data 棧 120
5 2 2 SQLite 和Core Data 122
5 3 Core Data 和iCloud 123
5 4 數據保護 123
5 5 一個簡單的使用Core Data 實現的任務管理器 124
5 5 1 創建項目 125
5 5 2 檢查模板代碼 125
5 5 3 修改模板代碼 137
5 6 前往下一章 142
第6 章 在Xcode 中對數據建模 143
6 1 模型化數據 143
6 1 1 定義實體和它們的特性 145
6 1 2 添加實體間的關系 149
6 1 3 創建獲取屬性和獲取請求模板 151
6 2 創建定制NSManagedObject 子類 154
6 2 1 實現驗證規則 156
6 2 2 實現默認值 157
6 3 創建任務模型 157
6 4 前往下一章 159
第7 章 創建Core Data 應用程序 161
7 1 任務應用程序架構 161
7 1 1 數據模型 162
7 1 2 類模型 162
7 1 3 用戶界面 163
7 2 編寫應用程序代碼 164
7 3 MasterViewController 和基本用戶界面 164
7 4 產生托管對象子類 168
7 5 添加和查看任務 169
7 5 1 創建ViewTaskController 169
7 5 2 修改MasterViewController 173
7 6 創建編輯控制器 176
7 6 1 使用EditTextViewController 編輯文本 176
7 6 2 使用EditPriorityViewController 設置優先級 181
7 6 3 使用EditLocationViewController 添加和編輯位置 185
7 6 4 使用EditDateController 修改日期 191
7 6 5 完成編輯控制器 196
7 7 在MasterViewController 中顯示結果 198
7 7 1 使用NSSortDescriptor 排序結果 199
7 7 2 使用NSPredicate 過濾結果 200
7 8 使用NSFetchedResultsController 創建分組表 201
7 9 實現定制托管對象 206
7 9 1 編寫動態屬性代碼 206
7 9 2 運行時默認值 207
7 9 3 驗證單個字段 208
7 9 4 多字段驗證 209
7 10 前往下一章 211
第8 章 和Core Data 相關的Cocoa 特性213
8 1 鍵-值編碼 213
8 1 1 鍵和鍵路徑 214
8 1 2 使用鍵設置值 216
8 1 3 集合操作符 216
8 1 4 使用KVC 時額外要考慮的事 217
8 2 鍵-值觀察 218
8 2 1 觀察對象的改變 218
8 2 2 自動和手動實現KVO 219
8 2 3 鍵-值觀察示例 219
8 3 使用NSPredicate 225
8 3 1 創建謂詞 225
8 3 2 使用謂詞 228
8 4 排序描述符 228
8 5 前往下一章 229
第9 章 Core Data 遷移和性能 231
9 1 模型版本控制和架構遷移 231
9 1 1 模型版本控制 233
9 1 2 輕量遷移 235
9 1 3 生成映射模型 237
9 2 線程安全與Core Data 241
9 2 1 線程設計 241
9 2 2 線程和Core Data 242
9 2 3 線程和NSOperation 242
9 2 4 Core Data 線程處理示例 243
9 3 Core Data 性能 251
9 3 1 故障 251
9 3 2 數據存儲類型 252
9 3 3 存儲二進制數據 252
9 3 4 實體繼承 253
9 3 5 運行時性能 254
9 3 6 使用獲取結果控制器管理變化 254
9 4 使用Instruments 進行性能分析 257
9 4 1 啟動Instruments 258
9 4 2 Instruments 界面 258
9 4 3 Core Data 儀表 259
9 5 前往下一章 260
第Ⅲ部分 使用Web 服務集成應用程序
第10 章 在iPhone 上使用XML 263
10 1 iOS SDK 和Web 263
10 1 1 Web 應用程序架構 264
10 1 2 同步數據獲取 264
10 1 3 URL 加載系統 265
10 1 4 Web 訪問示例 266
10 1 5 從服務器請求數據 268
10 2 XML 和iPhone SDK 275
10 2 1 XML 簡要概述 275
10 2 2 使用NSXML 解析器解析XML 276
10 2 3 擴展示例,解析XML 277
10 2 4 使用libxml 生成XML 283
10 2 5 XML 生成示例 284
10 3 前往下一章 290
第11 章 使用Web 服務進行集成 291
11 1 網絡應用程序架構 291
11 1 1 兩層架構 292
11 1 2 三層架構(n 層) 293
11 1 3 應用程序通信 294
11 2 Web 服務介紹 294
11 2 1 SOAP 消息 295
11 2 2 REST 協議 297
11 3 示例1:基于位置的搜索 297
11 3 1 開始 298
11 3 2 創建界面 299
11 3 3 Core Location 299
11 3 4 本地搜索API 302
11 3 5 使用搜索欄 304
11 3 6 處理Web 服務響應 307
11 4 示例2:內容分析 318
11 4 1 開始 319
11 4 2 創建用戶界面 320
11 4 3 實現POST 調用 321
11 4 4 接收XML 響應 324
11 4 5 解析響應XML 325
11 4 6 完成 327
11 5 前往下一章 327
附錄A 應用程序故障診斷工具 329
A 1 Instruments 329
A 1 1 啟動Instruments 330
A 1 2 跟蹤文檔 331
A 1 3 Objective-C 內存管理 332
A 1 4 內存泄漏示例應用程序 334
A 1 5 在Instruments 中分析內存泄漏 335
A 2 靜態分析器 338
如果你是一名有經驗的開發者并對開發以數據為中心的iPhone和iPad應用程序感興趣,那么《iOS數據庫應用高級編程(第2版)》恰好適合你。這本必須擁有的書進行了新的充分修訂,并且在結構上對應企業應用程序的數據流。該書作者Patrick Alessi經驗豐富,他先向你演示了如何從大規模數據庫獲取數據并將數據放入設備上和顯示該數據。然后講解了如何直接在設備上建立數據,并和Web服務通信。在本書的最后,你將能自信地為iPhone和iPad實現數據驅動應用程序并將iOS應用程序和現有的企業系統集成。

作 者 簡 介
在1980 年,當Patrick Alessi 第一次看到他的名字在終端上閃過時,他就迷戀上了編
寫計算機程序。從那以后,他開始使用各種語言為他能獲得的硬件平臺編寫軟件,包括在
他接受工程教育期間對VAX 系統上的Fortran 語言的短暫而痛苦的嘗試。Patrick 從美國羅
格斯大學獲得了土木工程學士學位,然后又從美國史蒂文斯理工學院獲得了計算機科學學
士學位。
在專業領域,Patrick 主要研究以數據為中心的應用程序,其客戶范圍小到小型企業數
據庫,大到美國空軍的大規模系統。當前,他關注于移動開發的前景,并為如iPhone 和iPad
這樣的移動設備開發網絡應用程序。
Patrick 工作之余喜歡玩游戲(尤其是“星際爭霸”)、攝影、旅行和與家人在一起。你
可以關注他的推特pwalessi,或訪問他的博客iphonedevsphere.blogspot.com。
技術編輯簡介
Michael Gilbert 是一名在各種工程公司工作過的資深系統程序員。他的第一個游戲是
在Atari ST 上開發的,并且他是STart 雜志的特約編輯,經常在該雜志上發表文章。多年
以來,他一直在為世界范圍內的用戶開發PC 和Mac 上的游戲軟件。他還是一位專業的Flash
ActionScript 程序員,并且開發了一個名為HigherGames 的流行互聯網游戲環境。現在他喜
歡開發iPhone 和iPad 游戲,并且當前已經在App Store 上發布了幾款游戲,并且將來還會
發布更多。在業余時間他喜歡和他的妻子Janeen 一起玩拼字游戲。
致 謝
我要借此機會感謝每位促成這本書出版的人。首先我要感謝我的策劃編輯Mary James,
本書的第2 版在她的領導下完成了策劃過程。其次我要感謝我的項目編輯Brian
MacDonald,他幫助我解決了在寫作和出版過程中出現的每個問題。我還要感謝我的技術
編輯Mike Gilbert,他利用寶貴的應用開發時間來審查我的作品。最后我要感謝所有其他編
輯和制作人員,他們投入了大量時間在本項目上從而使它最終能夠印刷。
對于我的妻子Cheryl 和我的繼女Morgan,我無論如何感謝都不為過。在我編寫本書
的整個期間,她們容忍了我的壞脾氣,還容忍了我沒時間參加有趣的家庭活動。在我編寫
本書的工作時她們操持家務。你們對我的耐心是令人震驚的。我還想要感謝我的媽媽,在
我非常小的時候她就引導我學習計算機并教會了我計算機的基礎知識。最后我想要感謝我
的爸爸,他促使我努力工作并讓我明白了如何成為一名父親。

前 言
隨著iPhone 的推出,蘋果公司徹底改變了移動計算市場。iPhone 將移動電話從一臺用
來打電話、檢查電子郵件和查找電影場次的設備轉換為一臺幾乎可以運行任何類型的應用
程序的計算機。自從iPhone 在2007 年發布以來,開發人員已經編寫了超過70 萬種可在iOS
設備上運行的應用程序。這些應用程序可分為很多種類型,包括游戲、實用工具、社交網
絡、參考、導航和商務等類型。
計算領域的趨勢正在趨向于可移動性和移動平臺,如iPhone 和iPad,并且正在遠離基
于桌面的環境。尤其在商業和企業環境中,決策者想要一天24 小時方便快捷地訪問他們的
數據。iPhone 和iPad 是移動計算的理想平臺,因為它們具有合適的結構因素和廣泛的庫和
API 集合。
盡管市場上有很多非常好的iOS 軟件開發方面的書籍,但我不能找到一本專門面向企
業開發者的書籍,這些企業開發者需要使企業數據或商業應用程序具有可移動性。我編寫
此書的最初目的是向這些開發者提供這樣的信息,他們可用這些信息從后臺服務器獲得企
業數據,并在可移動設備上顯示和操作這些數據,然后獲得合適的返回給他們的企業信息
系統的信息。
在我編寫這本書的過程中,有一個事實變得清晰起來,那就是除了我在開始時提到的
業務用例,我在本書中介紹的工具和技術還適合大多數應用程序類型。任何類型的應用程
序的開發者,只要他需要在iOS 上存儲數據,就都會對Core Data API 的廣泛覆蓋率感興趣。
任何想要發送數據到如Facebook 或Twitter 這樣的外部Web 服務的開發者都能受益于本書
的處理XML 和Web 服務的章節。許多應用程序都需要使用表顯示數據,對此我也會詳細
介紹。最后,所有iOS 應用程序都有一個用戶界面,我將介紹如何使用故事板構建用戶界
面。盡管我的最初想法是為企業開發者編寫一本書,但我相信我寫的書幾乎對開發任何類
型的應用程序都有用。
此版本的新內容
自本書的第1 版發行以來,iOS 開發社區已發生了很大變化。蘋果公司持續發布具有
新特性的iOS 新版本來幫助開發者為蘋果設備構建更好的應用程序。
通過引入Automatic Reference Counting(ARC),蘋果公司已極大簡化了iOS 應用程序
中的內存管理工作。開發者不再需要手工保留或釋放內存,而是由ARC 處理這些。因此,
我更新了本書的示例來實施ARC 和與ARC 兼容。
蘋果公司還通過提供故事板來精簡iOS 用戶界面的開發。故事板替代了Interface
iOS 數據庫應用高級編程(第2 版)
VI
Builder 原來提供的功能。現在你可以在Xcode 的故事板中處理所有用戶界面工作,我已經
修改了上一版的代碼和示例以在合適的地方使用故事板。
最后,所有屏幕截圖和許多其他圖表都已被重畫以反映這些或其他一些自第1 版以來
在iOS 生態系統中進行開發的變化。
本書讀者對象
如前所述,我最初是為企業開發者編寫此書的,他們主要負責移動化企業數據和編寫
在移動設備上呈現和操作這些數據的應用程序。在寫作這本書期間,我開始確信我正在介
紹的工具、API 和開發技術對于商業領域之外的許多種類的應用程序開發都是有價值的。
任何編寫應用程序以任何方式處理數據的人都應該會發現本書很有用。
本書應該不是你的第一本iOS 應用程序開發書籍。在本書中你找不到“Hello World”
iOS 應用程序。有很多好書可用來學習如何構建基本iOS 應用程序。本書主要針對已經理
解如何構建iOS 應用程序的開發者,他們知道如何使用Interface Builder 設計和構建用戶界
面,并且熟練掌握了Objective-C。這并不是說初學者無法在這里找到有用的知識,只是
我在編寫這本書時認為讀者已經理解了iOS 應用程序的基本架構并能夠熟練地使用Xcode
工具。
本書內容
本書講述了用于理解如何構建以數據為中心的iOS 應用程序的技術。你將會發現和
SQLite 有關的章節,SQLite 是作為iOS 的一部分而被包含在其中的數據庫引擎。此處你將
學習如何從各種格式的文件中導入數據到數據庫中和如何在設備上查詢數據。我將廣泛地
介紹UITableView 控件,包括自定義數據顯示的不同策略。另外我將介紹如何使用故事板
構建應用程序用戶界面。你還將看到Core Data API 的廣泛使用。當你需要在設備上構建和
存儲數據時,你將發現你會經常使用這個極好的數據持久存儲框架。最后將介紹如何在iOS
上構建XML 和如何將你的應用程序與Web 服務集成。
本書結構
我將本書分為三個部分,它們寬松地對應企業應用程序中的數據流。本書的第Ⅰ部分
介紹了如何從如Oracle、MySQL 或SQL Server 這樣的大型數據庫獲取數據,以及如何將
這些數據存儲到設備中并顯示。本書的第Ⅱ部分介紹了如何在設備上構建數據和Core Data
API。本書的最后一部分介紹了如何從設備獲取數據和與Web 服務通信。盡管我嘗試以一
種邏輯順序逐章呈現這些材料,但讀者不需要按順序閱讀本書。如果你正在構建基于表視
圖的應用程序并需要知道如何定制表的外觀,則你只需跳轉到第3 章。如果你正在構建針
對iPad 的應用程序,則只需要閱讀第4 章。如果你需要實現Core Data,可跳轉到第Ⅱ部
前 言
VII
分。如果你需要集成Web 服務,可參考第10 章和第11 章。
閱讀本書需要做的準備
因為這本書適合中到高級iOS 開發者,所以你應該已經具有了閱讀本書所需的所有工
具。你需要一臺安裝有Mac OS X 的蘋果計算機來構建iOS 應用程序。另外你需要安裝
Xcode 開發環境,它由蘋果公司在Mac 應用商店免費提供。
最后一個需求是如果你想要在物理設備上安裝你的應用程序,而不是僅在iOS 模擬器
上運行你的代碼,還需要加入iOS 開發者計劃。在編寫這本書時,加入該計劃每年需花費
99 美元,從而允許你在你的設備上構建和運行應用程序,并可將最終完成的應用程序提交
給蘋果iOS 應用商店用于銷售。如果你當前不是開發者計劃成員,不要擔心。本書中只有
很少一部分代碼需要在真實設備上運行,而本書中幾乎所有代碼都可在模擬器中正確運行。
對于需要在設備上運行的代碼,我會在文本中做出標注。
源代碼
當你閱讀本書的源代碼時,你可以選擇手工輸入所有代碼,或者使用本書附帶的源代
碼文件。本書使用的所有源代碼都可從www.wrox.com 下載,具體對于本書來說,其源代
碼可從www.wrox.com/remtitle.cgi?isbn=1118391845 的Download Code 選項卡處下載。
你還可以在www.wrox.com 處通過EISBN(本書的EISBN 為978-1-1183-9184-6)搜索
本書來找到其源代碼。www.wrox.com/dynamic/books/download.aspx 處提供了當前所有
Wrox 書籍的完整代碼下載列表。
在每一章中,你可在清單標題和文本中根據需要查找代碼文件名稱的引用。
大多數www.wrox.com 中的代碼都以.ZIP、.RAR 或類似的適合特定平臺的文檔格式
壓縮。下載這些代碼后,你只需要使用合適的壓縮工具解壓縮。
勘誤表
盡管我們已經盡了最大的努力來保證文章或代碼中不出現錯誤,但是錯誤總是難免
的,如果你在本書中找到了錯誤,例如拼寫錯誤或代碼錯誤,請告訴我們,我們將非常感
激。通過勘誤表,可以讓其他讀者避免走入誤區,當然,這還有助于提供更高質量的信息。
要在網站上找到本書英文版的勘誤表,可以登錄www.wrox.com/remtitle.cgi?isbn=
1118311809,或者訪問http://www.wrox.com,通過Search 工具或書名列表查找本書,然后
在本書的細目頁面上,單擊Errata 鏈接。在這個頁面上可以查看到Wrox 編輯已提交和粘
貼的所有勘誤項。完整的圖書列表還包括每本書的勘誤表, 網址是
www.wrox.com/misc-pages/ booklist.shtml。
如果你在勘誤表上沒有找到錯誤,那么可以到www.wrox.com/contact/techsupport.shtml
iOS 數據庫應用高級編程(第2 版)
VIII
上,完成上面的表格,并把找到的錯誤發送給我們。我們將會核查這些信息,如果無誤的
話,會把它放置到本書的勘誤表中,并在本書的后續版本中更正這些問題。
p2p.wrox.com
要與作者和同行討論,請加入p2p.wrox.com 上的P2P 論壇。這個論壇是一個基于Web
的系統,便于你張貼與Wrox 圖書相關的消息和相關技術,與其他讀者和技術用戶交流心得。
該論壇提供了訂閱功能,當論壇上有新的消息時,它可以給你傳送感興趣的論題。Wrox
作者、編輯和其他業界專家和讀者都會到這個論壇上來探討問題。
在http://p2p.wrox.com 上,有許多不同的論壇,它們不僅有助于閱讀本書,還有助于
開發自己的應用程序。要加入論壇,可以遵循下面的步驟:
(1) 進入p2p.wrox.com,單擊Register 鏈接。
(2) 閱讀使用協議,并單擊Agree 按鈕。
(3) 填寫加入該論壇所需要的信息和自己希望提供的其他信息,并單擊Submit 按鈕。
(4) 你會收到一封電子郵件,其中的信息描述了如何驗證賬戶和完成加入過程。
不加入P2P 也可以閱讀論壇上的消息,但要張貼自己的消息,就必須加入該論壇。
加入論壇后,就可以張貼新消息,回復其他用戶張貼的消息。可以隨時在Web 上閱讀
消息。如果要讓該網站給自己發送特定論壇中的消息,可以單擊論壇列表中該論壇名旁邊
的Subscribe to this Forum 圖標。
關于使用Wrox P2P 的更多信息,可閱讀P2P FAQ,了解論壇軟件的工作情況以及P2P
和Wrox 圖書的許多常見問題的解答。要閱讀FAQ,可以在任意P2P 頁面上單擊FAQ 鏈接。
pagetop