核心数据:基于UITableView的简单静态iPhone应用程序的过度杀伤?

时间:2010-04-23 10:15:23

标签: iphone objective-c uitableview core-data

我有一个相当简单的iPhone应用程序,其中包含许多包含单个分组表视图的视图。这些视图在导航控制器中保持在一起,导航控制器在标签栏中分组。简单的东西。

我的表格视图只是列出文本(例如“Dog”,“Cat”和“Weasel”),而这些数据是从一系列plist中提供的。也许值得一提的是,这些表是“静态的”,因为它们的数据是预先确定的,并且只会被修改 - 如果是这样,很少确实是由开发人员(在这种情况下,moi)。

这种基本方法虽然达到了极限,但我认为我需要一些更多的关系。我过去曾经使用过Core Data,但只能使用数据由用户输入决定的应用程序。

我有四个密切相关的问题:

  1. 主要由一系列简单的表格视图构成的应用程序的核心数据是否过度?
  2. 您是否建议使用Core Data来管理预先确定且极不可能发生变化的数据?
  3. 可以锁定核心数据,使其数据无法更改,从而放弃了我作为开发人员处理编辑和保存托管对象上下文的责任吗?
  4. 如何向Core Data提供我预定的数据,以及我知道它可以使用的格式?
  5. 谢谢一群人。

5 个答案:

答案 0 :(得分:3)

答案很简单。如果您不需要持久化为过时格式(如MSWord等),那么您应该使用Core Data。原始的SQLite令人头疼,99.999%的时间都不值得付出努力。

核心数据比plist更有效,并且如果项目有所发展,则可以提供更大的灵活性。

使用OS X机器预填充Core Data sqlite文件也非常容易;你知道,首先用于开发应用程序的机器:)

NNW的用例是这个规则的一个例外,如果我是一个博彩人,我敢打赌Core Data团队的注意力将在未来的更新中得到纠正。顺便说一下,如果您使用核心数据,您将免费获得更新。

答案 1 :(得分:2)

您可以考虑直接使用SQLite API,而不是Core Data,因为以这种方式预填充数据库可能更容易。您可以在任何平台(Mac,Windows,Linux)上创建和修改SQLite数据库,只需将其作为资源复制到应用程序的包中。

您可以通过从应用程序包中复制SQLite数据库来查找将创建用户数据库的教程/示例。在您的情况下,您可以使用捆绑中的那个。请务必以只读方式打开它。

答案 2 :(得分:2)

我建议坚持使用plist,因为您的数据很少会发生变化,而且一旦发生,它将由开发人员驱动。

  1. 核心数据功能非常强大,但您需要设置适量的管道和基础设施才能使其正常运行。
  2. Core Data将其商店放在您的应用包之外(因为它必须在iPhone上运行),因此所有新安装都需要在第一次运行时将数据加载到商店中。无论如何,这些数据可能都必须存储为资源plist,所以你不会省去生成这些plist的麻烦。结果证明这不是真的,你可以存储持久存储的只读部分在应用程序包中。
  3. 由于我不确切知道你运行的是什么类型的限制,Core Data可能是解决方案,但我猜它不会。如果对象关系是您正在处理的最大困难,那么您应该阅读object archiving,以便将整个对象树存储为一种形式,可以轻松地将其保存为捆绑中的资源并在必要时重新创建

答案 3 :(得分:1)

您应该阅读why NetNewsWire switched

该帖子的两个主要内容:

  

我认为核心数据是95%的时间都是正确的方式。或者更多。它很容易使用。它很快(在大多数情况下)。

并且:

  

(规则:始终以最高级别工作。)

答案 4 :(得分:0)

我建议使用普通的SQLite。它更简单,更易于维护,您可以使用许多流行的GUI编辑器在非mac系统上构建数据库。对我来说,使用Core数据仍然很痛苦。从静态SQlite数据库填充表视图的代码简单,直接且透明,而Core Data需要更多的样板代码,一开始你甚至都不完全理解,整体上有很多隐藏的复杂性,你真的不需要

相关问题