第Ⅰ部分 iCloud简介 3
第1章 探讨iCloud及其用户体验 3
1.1 云计算介绍 3
1.2 理解iCloud范式 4
1.2.1 通过应用组织文件 5
1.2.2 使用iCloud、Time Machine和Auto Save来管理文件 7
1.2.3 在设备之间同步数据 8
1.2.4 进行往返旅程 8
1.3 本章小结 9
1.4 练习 9
第2章 搭建iCloud开发环境 11
2.1 在iOS和OS X上管理应用安全 11
2.1.1 在developerapple.com上识别你和你的应用 12
2.1.2 确定运行时的用户和泛在容器 15
2.2 深入iCloud基础 15
2.2.1 Apple ID 16
2.2.2 bundle标识符 18
2.2.3 权限和功能 19
2.2.4 泛在容器 20
2.3 在应用中使用iCloud 21
2.4 本章小结 22
2.5 练习 22
第Ⅱ部分 使用API 25
第3章 介绍API和第一个应用 25
3.1 苹果开发者入门 25
3.2 查看API 26
3.3 介绍内置数据应用 27
3.3.1 跟上苹果公司的步伐 28
3.3.2 应用概述 29
3.3.3 为iOS和OS X创建单独的Xcode项目 30
3.4 装配界面 37
3.4.1 装配iOS界面 37
3.4.2 装配OSX界面 39
3.5 本章小结 40
3.6 练习 40
第4章 使用Contacts的AddressBook API 43
4.1 考虑iOS和OSX上的AddressBookAPI 43
4.2 从iOS应用发送邮件 44
4.2.1 确保可以发送邮件 45
4.2.2 发送消息 45
4.2.3 检查邮件已配置并且网络可用 48
4.3 从OS X应用发送邮件 49
4.4 使用属性列表进行存储和同步 50
4.5 本章小结 51
4.6 练习 51
第5章 使用Event KitAPI管理日历和提醒 53
5.1 探讨事件类的层次结构 54
5.2 设置OS X的权限 54
5.3 操作Calendar数据库 55
5.3.1 对Event Store的分配和访问 55
5.3.2 创建新的事件或提醒 57
5.3.3 搜索事件或提醒 59
5.3.4 设置或修改属性 59
5.3.5 提交更改 61
5.4 向iOS应用添加提醒 62
5.5 在OSX上将事件添加到应用 64
5.6 本章小结 66
5.7 练习 66
第6章 保护用户数据隐私 67
6.1 隐私需求 67
6.2 查看苹果公司公布的规则和指南 67
6.3 应用隐私的最佳实践 68
6.3.1 知道什么应该是私有的 68
6.3.2 使用良好的编程风格来强制隐私 68
6.3.3 调试时要小心 69
6.3.4 要求许可并解释如何操作数据 69
6.3.5 不能要求使用个人数据来解锁应用 70
6.3.6 添加额外的措施来保护未成年人 70
6.3.7 为支持材料提供隐私 70
6.3.8 考虑用户的问题 71
6.4 本章小结 71
6.5 练习 72
第Ⅲ部分 运用技术 75
第7章 介绍block、线程和通知 75
7.1 跟上block和线程 76
7.1.1 队列和线程 76
7.1.2 block 76
7.2 使用通知,赶上潮流 77
7.2.1 通知的属性 78
7.2.2 注册通知 78
7.2.3 发布通知 79
7.3 接收iCloud可用性变化的通知 79
7.4 介绍第二个项目 80
7.5 准备继续前进 80
7.6 本章小结 80
7.7 练习 81
第8章 使用键-值编码 83
8.1 建立受控的测试环境 83
8.2 实现KVC 84
8.3 在iOS模拟器上测试iCloud 85
8.4 准备测试项目 85
8.5 为RoundTrip共享键-值存储 87
8.6 设置和使用NSUbiquitousKey-ValueStore 88
8.6.1 查看方法 88
8.6.2 使用存储 89
8.6.3 准备用户界面 89
8.6.4 在运行时设置存储 90
8.6.5 监控存储变化 92
8.6.6 监控界面变化 93
8.7 本章小结 94
8.8 练习 95
第9章 在iCloud中使用Preferences、Settings和Keychains 97
9.1 使用属性列表 98
9.1.1 查看属性列表 98
9.1.2 查看属性列表的内容 100
9.1.3 读写属性列表 101
9.1.4 在属性列表中使用NSData对象 102
9.1.5 在属性列表中使用标量 102
9.2 处理用户默认值 103
9.2.1 用户可以设置默认值吗? 103
9.2.2 默认值的变化有多频繁? 103
9.2.3 默认值和设置应该放在何处? 104
9.2.4 如何将用户默认值与iCloud一同使用? 104
9.3 注册默认值 104
9.4 本章小结 105
9.5 练习 105
第10章 使用Core Data管理持久存储 107
10.1 了解CoreData的目标 107
10.1.1 理解对象图 108
10.1.2 介绍错误 108
10.1.3 介绍数据模型 109
10.2 结构化数据 109
10.2.1 属性 109
10.2.2 关系 109
10.2.3 规范化数据 111
10.2.4 反规范化数据 111
10.3 理解CoreData如何与iCloud交互 112
10.4 介绍CoreData项目 112
10.5 使用Xcode数据建模工具 114
10.5.1 管理数据模型 115
10.5.2 使用实体 116
10.5.3 将实体转换为对象 118
10.5.4 使用对象 122
10.6 探讨CoreData堆栈 122
10.7 本章小结 123
10.8 练习 123
第11章 使用Xcode项目工作区进行协同开发 125
11.1 基于数字总线而构建 126
11.2 回顾Xcode文件管理 126
11.3 建立多项目工作区 129
11.4 创建多项目工作区 130
11.5 本章小结 133
11.6 练习 133
第12章 使用包和资源向应用添加数据 135
12.1 package、bundle和reSource 135
12.1.1 将文件添加到应用的bundle 136
12.1.2 获取bundle中的文件 138
12.2 沙盒文件 139
12.2.1 建立沙盒 139
12.2.2 OS X上的沙盒容器 141
12.2.3 写入沙盒 141
12.3 包括属性列表 142
12.3.1 将属性列表添加到应用中 142
12.3.2 将属性列表读入NSDictionary 143
12.4 包含CoreData存储 143
12.5 本章小结 144
12.6 练习 144
第Ⅳ部分 使用iCloud文档和数据 147
第13章 添加iCloud基础设施 147
13.1 给应用添加工作区 148
13.1.1 探索iOS和OS X文档架构的区别 150
13.1.2 处理UI区别 150
13.1.3 设计共享应用的文件夹结构 150
13.1.4 检查最后的结果 151
13.1.5 审视项目 152
13.2 利用developer.icloud.com调试iCloud应用 153
13.3 创建应用 156
13.4 创建Shared文件夹 157
13.4.1 Constants.h 157
13.4.2 Constants.m 157
13.4.3 SharediCloudController.h 158
13.4.4 SharediCloudController.m 159
13.5 创建应用的类 168
13.5.1 AppDelegate 168
13.5.2 MasterViewController 170
13.5.3 DetailViewController 176
13.5.4 ReportDocument 179
13.6 本章小结 181
13.7 练习 181
第14章 在iCloud中使用文件封装器 183
14.1 探索文件、文件封装器和文档 183
14.1.1 文件 184
14.1.2 文件封装器 184
14.1.3 文档 185
14.2 用户如何管理iCloud文件 185
14.3 开始Placid项目 187
14.3.1 developer.apple.com上的证书、标识符、设备和属性 188
14.3.2 Xcode 5中的证书、标识符、设备和属性 189
14.3.3 修改常规设置 190
14.3.4 设置图像 190
14.3.5 配置性能 191
14.3.6 设置文档和通用类型标识符 192
14.3.7 检查编译设置 193
14.4 书写代码 194
14.4.1 AppDelegate 195
14.4.2 MasterViewController 197
14.4.3 DetailViewController 206
14.4.4 WrappedDocument 209
14.5 使用故事板 214
14.6 本章小结 214
14.7 练习 215
第15章 使用iOS文档 217
15.1 规划应用的结构 218
15.1.1 iPad中导航控制器与拆分视图控制器的选择 218
15.1.2 选定结构 218
15.2 开始Loon项目 219
15.2.1 设置项目的基本信息 219
15.2.2 设置项目功能 220
15.2.3 建立文档 221
15.2.4 添加设置 222
15.3 编写代码 222
15.3.1 AppDelegate 223
15.3.2 MasterViewController 227
15.3.3 DetailViewController 240
15.3.4 WrappedDocument 244
15.3.5 FileRepresentaiton 251
15.4 本章小结 252
15.5 练习 252
第16章 使用OS X文档 253
16.1 NSDocument与UIDocument之间区别的演化 253
16.2 规划项目 254
16.3 开始Chazy项目 256
16.3.1 在Xcode中创建应用 256
16.3.2 将Document改为WrappedDocument 257
16.3.3 添加应用委托(根据需要) 258
16.4 编写代码 260
16.4.1 WrappedDocument 260
16.4.2 WindowController 267
16.5 测试应用 268
16.6 本章小结 269
16.7 练习 269
第17章 使用Core Data和iCloud 271
17.1 查看iCloudCoreData实现过程 271
17.1.1 为本章使用类扩展 271
17.1.2 使用选项词典 272
17.2 回退存储 273
17.3 创建并管理持久存储 273
17.3.1 异步创建持久存储 274
17.3.2 管理持久存储的变化 274
17.4 管理账户的变化 275
17.5 数据库迁移 276
17.5.1 正确看待数据模型的变化 276
17.5.2 重新开始 276
17.6 本章小结 278
17.7 练习 278
第18章 完成RoundTrip 279
18.1 用户如何看待Round Trip 279
18.1.1 使用OS X的Open对话框 280
18.1.2 使用iOS的拆分视图控制器 282
18.1.3 在OSX的SystemPreferences中检查iCloud文件 283
18.1.4 在iOS的Settings中检查iCloud文件 284
18.2 开发者如何看待RoundTrip 286
18.2.1 使用developer.icloud.com 286
18.2.2 使用Xcode 287
18.3 配置共享的泛在容器 289
18.4 使用iCloud共享控制器 290
18.4.1 建立应用委托与控制器的连接 291
18.4.2 声明iCloud共享控制器 291
18.4.3 实现iCloud共享控制器 292
18.5 将文档移至iCloud 296
18.6 将文档从iCloud移至本地存储 298
18.7 本章小结 298
18.8 练习 299