我为什么要将Core Data用于我的iPhone应用程序?

时间:2009-12-10 20:42:47

标签: iphone core-data

我正在开发我的第二款iPhone应用程序并对Core Data感到好奇。项目的时间有限,我的整体时间也是如此。

我是唯一的开发者,我觉得核心数据很有用,但我无法清楚地解释原因。

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

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

正如您所看到的,它是一个简单的数据驱动钻取应用程序,但我仍然不确定我是否可以证明在时间限制下使用Core Data - 学习曲线看起来很陡峭。

如果我的老板认为我们应该使用核心数据,我可以向他射击什么要点?逻辑手榴弹也很受欢迎。

7 个答案:

答案 0 :(得分:56)

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

  • Core Data为您管理保存和撤消功能。它有一个持久存储,可以跟踪更改,并且可以在任何次数(app close等)自动刷新到磁盘。
  • 核心数据和相关类提供了将实体放入UITableViews的简便方法,例如NSFetchedResultsController。
  • 核心数据将您需要处理的许多混乱事物抽象出来,例如对象列表,一对多或多对多关系,或对象属性的约束,单个漂亮干净的面向对象的界面。
  • Core Data附带了一个漂亮的图形对象模型编辑器,可以帮助您思考对象/实体设计,并随时进行优化。 (它还支持迁移,因此如果您稍后决定要在实体上使用不同的属性,则可以相对轻松地执行此操作。)

当然,学习曲线可能有点陡峭,但Apple的例子非常棒,Core Data文档非常完整且有用。一旦你的核心数据被删除,构建你的应用程序就变得轻而易举。

答案 1 :(得分:8)

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

答案 2 :(得分:6)

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

CoreData的工作非常......逻辑上,我猜,它非常方便。它为您节省了大量开销,我知道它确实为我节省了大量时间来编写该应用程序。从长远来看,学习新技术的初期投资非常值得,因为我的皮套中有这么强大的工具。

答案 3 :(得分:4)

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

许多样板软件已经在空的app模板中编写,但实际的程序员与数据库功能的交互是最简单和直接的。

试一试:它比你想象的容易。

答案 4 :(得分:3)

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

答案 5 :(得分:1)

对于持久性本地存储,您有几个不同的选项,但无论如何都需要使用其中一个,那么为什么不使用Core Data?

至于学习曲线,示例中的应用程序可以帮助您。一旦你走过样本,它就非常简单。

-t

答案 6 :(得分:0)

这里的其他答案很好地解释了为什么你可能会使用核心数据,但由于它的学习曲线似乎是一个普遍关注的问题,对于那些偶然发现这个问题的人来说,知道有另一种选择可能会有用。学习曲线相当“不那么陡峭”:Realm

以下是Quora的简短帖子,说明为什么您可以考虑领域核心数据:https://www.quora.com/Why-would-you-use-Realm-over-Core-Data