何时在iPhone开发中使用Core Data

时间:2010-10-04 18:20:22

标签: iphone core-data

我一直在研究为iOS创建一个新的应用程序,在我的最后几个应用程序之后,我很想使用CoreData(包括保存和自动撤消/重做等好处)。

当我尝试实现我在项目中给出的数据模型时,我有点困惑,因为看起来CoreData看起来非常接近数据库而不是数据模型。

我是否应该将CoreData用于通常不适合“大量数据/记录”描述的应用程序,我通常会使用SQL样式数据库?

如果它有帮助,我正在设计的应用程序将是一种文档编辑器,因此我将需要表示许多对象(文档中可能存在嵌入的图像,图形/图表,超链接等) )我需要从xml描述创建这个模型。

这些“项目”中的大多数需要实现一组接口(该模型是为Java产品创建的;我很难看到继承和抽象接口如何应用于CoreData),以及我发现的每个示例到目前为止,似乎将基本元素(如NSDate或String)添加到简单模型中。

这听起来像CoreData的候选者,还是CoreData更像是在应用程序中实现数据库的工具? (即图书馆系统/员工数据库)。

2 个答案:

答案 0 :(得分:4)

如果能够正确编写将替换的大部分代码,请将CoreData视为一个选项。所以一旦你知道如何正确序列化/反序列化,写下撤消/重做,KVO,复制等。

  

我应该使用CoreData吗?   通常不适合的应用程序   '大量数据/记录'   描述我一般会用   SQL样式数据库用于?

CoreData不仅限于大型数据库(根本不适用) - 它适用于小型集合,以及数据库之外(二进制文件和文档,直接在内存中使用模型)。

您的示例可以从CoreData中受益。它取决于您需要的自定义代码的数量 - 如果您只是将CD对象用作接口生成器,并且您的应用程序使用了大量自定义代码/对象,则有时编写代码会更容易。说实话,我从来没有在运送应用程序中使用CoreData - 我总是找到在此之前将模型迁移到现有代码的理由(假设在开发/建模阶段也使用了CoreData)。

这是一个很好的框架,但它不应该被视为可以解决大多数问题的“魔术对象生成器”。首先,您需要了解您打算用它替换的技术/模式。它的理想用途数量有限。如果您无法编写对象所依赖的代码,请不要使用CoreData。嘿 - 不要把它当作初始努力的替代品,因为有时候它是一个好的选择和一个糟糕的选择 - 但如果你没有(真正)理解你就不能为你的背景做出客观的答案它有什么能力。

答案 1 :(得分:2)

Core Data的目的之一是管理内存中的对象图。这当然适合您的应用。然后它可以很容易地保存到磁盘。使用mogenerator之类的工具可以让您使用Core Data来管理对象生命周期,图形和持久性,但是可以在顶部添加自定义协议。

简而言之,是的,您可以将Core Data用于非数据库用途,并通过一些工作来符合模型。