第Ⅰ部分操作和显示iPhone和iPad上的数据 3
第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管理数据 119
第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服务集成应用程序 263
第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