Core Data “Failed Banks” 模式表
在iPhone所有数据存储的方法里面,Core Data是重要数据存储的最佳选择。它能降低你应用的内存开销,提升响应速度,并把你从繁琐的代码中解脱出来。
然而,学习Core Data之路异常久远。不过这也是这一系列教程的由来 – 让你快速掌握Core Data基础知识。
作为该系列教程的第一部分,我们将为我们的对象建立一个可视化数据模型。为保证其有效性,我们会做一个快速肮脏测试(dirty test验证其健壮性和有效性),然后将其勾在一个表视图(table view)里,这样我们可以看到这一列对象。
系列教程的第二部分,我们将讨论如何将数据预先载入到Core Data中,这样我们的应用启动时就初始化好了。
最后的部分,我们将讨论如何使用NSFetchedResultsController来优化应用,达到降低内存开销以及改进响应时间的目的。
在本教程开始之前,我建议先翻阅我以前写的SQLite for iPhone Developers教程,这会让你更容易理解。另外,2个教程做的应用(app)都是一样的,只是这次我们用的是Core Data!
创建一个Core Data工程
下面让我们开始!建立一个新的Window-based Application,勾选“Use Core Data for storage”,将工程命名为“FailedBanksCD.”
在开始前,我们快速看一下建好的工程。首先展开Resources并双击FailedBanksCD.xcdatamodel,会弹出一个可视化编辑器-这就是我们接下来会用到的模型对象图示。现在我们先把它关闭。
然后看看FailedBanksCDAppDelegate.m。在这里你会看见已经为我们实现的一些新函数,用于建立Core Data”堆”。新增了一个 managed object context,一个managed object model, persistent store coordinator. 啊??
别担心。名字虽然开始听起来奇怪,一旦你打通“任督二脉”就很容易理解到他们是什么。
- Managed Object Model:你可以把它当作是数据库规划图。这是一个包含其他对象(也叫Entities)定义的类,对象存储在数据库里面。通常会用刚刚瞄过的可视化编辑器来设定数据库的对象,它们的特性(attributes),它们是如何相互关联的。然而,你也可以用代码来实现。
- Persistent Store Coordinator:你可以把它当作是数据库的连接。在这里你设定用来存储对象的数据库的真实名称和位置,以及需要时用来保存的管理对象上下文(managed object context)。
- Managed Object Context:你可以把它当作是一个数据库取出对象的“暂存器”。对我们来说它也是这三个里面最重要的,因为我们大多都在上面工作。基本上,无论何时需要获取对象,插入对象或是删除对象,你都要调用管理对象上下文(managed object context)的方法(或者说大部分时间!)。
无需过于担心这些方法 – 你不用过于纠缠这些。相反,了解它们是什么以及它们代表的涵义会比较好。