本教程内容篇幅比较长!Core Data 属于 iOS App开发的进阶内容了。
运行ShoppingCart应用程序
代码编写好了,我们运行App测试一下。
因为UI 视图界面并没有进行任何编码,因此没有什么变化,重点是Xcode调试器控制台的输出内容。NSLog语句的输出就显示在这里的。
这些输出内容,刚好符合我们的预期。Customer 实体中只有一条记录,购物车编号:100,而且购物车添加了2个具体的商品。
检查 SQLite数据库
前面我们说过,SQLite数据库文件存放在App的Document目录下,数据库文件名为ShoppingCart.sqlite,怎么找到它呢?
使用Finder 切换到如下文件夹:
/Users/<您的用户名>/Library/Application Support
/iPhone Simulator/6.0/Applications/<全局唯一的ID>/Documents
注意:目录Library 默认可能是隐藏的,要访问它,可按住Option键,然后单击Finder的前往(Go)菜单,然后选择 – 资源库菜单项,进入Library目录。
另外,其中的5.1 表示的是iOS 模拟器版本号,根据运行App选择的模拟器版本号不同而有变化。
Applications 目录中使用全局唯一的ID,通过查看最新修改的目录列表,可以找到ShoppingCart 应用程序,以及Documents目录的ShoppingCart.sqlite数据库文件。
怎么打开这个文件呢?
我们可以采用SQLite Database Browser工具来打开它。
可以从下面这个地址下载这个工具。
http://sourceforge.net/projects/sqlitebrowser/
将前面的ShoppingCart.sqlite数据库文件复制到我们方便访问的一个目录下,然后通过SQLite Database Browser工具打开它。
如果前面insertDataIntoShoppingCartDB方法中的代码行:
[self.managedObjectContext save:nil];
仍然是注释的情况下,数据库中是没有任何记录的。我们可以把该代码行的注释取消掉,然后再次运行App,再次检查一下数据库中的记录。
数据库的结构中,可以看到我们定义的三个实体对象:
默认生成的数据表的名字就是前面创建的Entity的名字,加上字母Z前缀,字段名也是定义的属性命名,然后加上字母Z前缀,而主键是Z_PK,自增长的整型。
查看数据记录:
Customer表中记录信息:
购物车ShoppingCartDetail中商品信息:
查看Execute SQL 选项卡,可以试着写一条SQL 脚本查询一下:
SELECT * FROM ZCustomer c
INNER JOIN ZShoppingCartMaster sm on c.ZCustomerID=sm.ZCustomerID
INNER JOIN ZShoppingCartDetail sd on sm.ZCartID=sd.ZCartID
本教程的具体内容及其范例App都收录在《一步一步学习iOS 6 编程》的最新版PDF文件中。
关于Core Data 框架中的其他开发内容,以及Xcode 4.5中提供的支持Core Data的Application 模板,都在《一步一步学习iOS 6 编程》中有具体的介绍。