为什么我应该使用核心数据为我的iPhone应用程序?

我正在研究我的第二个iPhone应用程序,并对Core Data感到好奇。 项目的时间是有限的,就像我整个的时间一样。

我是唯一的开发人员,我有一个感觉,核心数据将是有用的,但我不能清楚地解释为什么。

请原谅以下混淆..应用程序需要从中央服务器检索foos列表。 然后,用户可以从条形列表中添加一个条到foos,然后从bazes(!?)列表中添加一个baz到条形图,然后向baz添加一些可选的照片和描述。

一旦用户对他们的酒吧和baz工作满意,他们就会点击同步button将他们的数据上传回中央服务器。

正如您所看到的那样,这是一个简单的数据驱动的向下钻取应用程序,但是我仍然不确定我们是否可以在时间有限的情况下使用核心数据 – 学习曲线看起来很陡峭。

如果向我的老板争辩说我们应该使用核心数据,我可以向他射击什么? 逻辑手榴弹也表示赞赏。

核心数据将主要帮助应用程序的辅助方面 – 例如数据持久性,演示文稿等。您的老板的一些要点:

  • 核心数据为您pipe理保存和撤消function。 它有一个持久存储器,可以跟踪更改,并可以在任何时间自动刷新到磁盘(应用程序closures等)。
  • 核心数据和相关的类提供了简单的方法来让你的实体进入UITableViews,比如NSFetchedResultsController。
  • Core Data将很多你不得不自己处理的混乱的东西(比如对象列表,一对多或者多对多关系,或者对象属性的约束)抽象出来,变成一个很好的清理面向对象的接口。
  • 核心数据附带了一个很好的graphics对象模型编辑器,可以帮助你思考你的对象/实体devise,并随时改进。 (它也支持迁移,所以如果你稍后决定你需要实体的不同属性,那么可以相对简单地做到这一点)。

当然,学习曲线可能有些陡峭,但是苹果的例子非常好,核心数据文档非常完整和有用。 一旦你掌握了核心数据,build立你的应用程序将是一件轻而易举的事情。

要利用CoreData,您需要了解相当数量的Cocoa技术,概念和模式。 如果你知道这些,学习曲线并不是很陡峭。 如果看起来很陡峭,我会避免让它对你的项目至关重要,然后在停机时间学习,最后一旦你习惯了就可以使用它。 这绝对不是初学者的技术; 你需要一个良好的编程基础,包括cocoa特定的技术和概念。 很多人看到它,认为这对他们来说很容易,因为他们可以免费获得很多东西。 它就像一个代码生成器,对于那些使用它来做这件事的人来说,是相当接近无用的(代码生成代码),而不是巧妙地使用它来响应问题集。

就学习曲线而言,我认为这不像你想象的那么糟糕。 使用苹果公司的示例类和默认的CoreData项目模板,我能够在一个下午有一个工作的CoreData应用程序(相当简单,但不是微不足道的),并且在我有一个之前只花了几天的时间来玩代码真正理解所有移动的部分是什么(所有这些都在开发应用程序的其余部分,所以没有时间浪费在修补)。

CoreData的工作非常…逻辑上,我猜,这是非常方便的。 它为您节省了很多开销,而且我知道这确实为我节省了很多时间来编写这个应用程序。 从长远来看,在学习新技术方面的初期投资很值得,现在我的皮套里有了这样一个强大的工具。

我仍然在X-Code 101的知识范围内,但是我在自己使用的核心数据上进行了第一个应用程序(阅读了一个很好的教程之后)。

有很多样板文件已经写在空的应用程序模板中,但是实际的程序员与数据库function的交互是最简单直接的。

试一试:比你想象的要容易得多。

对于持久化的本地存储,您有几个不同的选项,但是您仍然需要使用其中的一个,那么为什么不使用Core Data呢?

至于学习曲线,有些例子中的应用可以帮助你。 一旦你通过样品,这是相当简单的。

-t

核心数据pipe理对象可以将其所有数据保存到数据库中,并仅作为内存中的ID引用。 因此,核心数据可以节省大量的内存,尤其是当您有大量模型数据时。 一旦使用Core Data,您甚至不必担心模型数据内存问题。

这里的其他答案在解释你为什么使用核心数据方面做得很好,但是由于它的学习曲线似乎是一个普遍的问题,对于那些偶然发现这个问题的人来说, “不太陡”的学习曲线: 境界 。

这里是一个简短的Quora文章,为什么你可以考虑领域核心数据: https : //www.quora.com/Why-would-you-use-Realm-over-Core-Data