核心数据:简单的、静态的基于UITableView的iPhone应用程序的杀伤力过高?
我有一个相当简单的iPhone应用程序,由许多视图组成,其中包含一个单独的分组表视图。这些视图保存在导航控制器中,导航控制器分组在选项卡栏中。简单的东西 我的表视图只做列表文本(如“Dog”、“Cat”和“Weasel”),这些数据来自一组plist。也许还值得一提的是,这些表是“静态”的,因为它们的数据是预先确定的,只有在这样的情况下,开发人员才会修改它们(在本例中是moi) 不过,这种基本的方法已经达到了极限,我想我需要一些更相关的东西。在过去,我对核心数据做过一些研究,但仅限于数据由用户输入决定的应用程序 我有四个密切相关的问题:核心数据:简单的、静态的基于UITableView的iPhone应用程序的杀伤力过高?,iphone,objective-c,uitableview,core-data,Iphone,Objective C,Uitableview,Core Data,我有一个相当简单的iPhone应用程序,由许多视图组成,其中包含一个单独的分组表视图。这些视图保存在导航控制器中,导航控制器分组在选项卡栏中。简单的东西 我的表视图只做列表文本(如“Dog”、“Cat”和“Weasel”),这些数据来自一组plist。也许还值得一提的是,这些表是“静态”的,因为它们的数据是预先确定的,只有在这样的情况下,开发人员才会修改它们(在本例中是moi) 不过,这种基本的方法已经达到了极限,我想我需要一些更相关的东西。在过去,我对核心数据做过一些研究,但仅限于数据由用户输
谢谢一群人。
你可以直接考虑使用SQLite API,而不是核心数据,因为这样可以更容易地预填充数据库。您可以在任何平台(Mac、Windows、Linux)上创建和修改SQLite数据库,并将其作为资源复制到应用程序包中 您可以找到通过从应用程序包中复制SQLite数据库来创建用户数据库的教程/示例。在您的情况下,您可以只使用捆绑包中的一个。请确保以只读方式打开它。您应该阅读 这篇文章的两大要点: 我打赌核心数据在95%的情况下都是正确的。或者更多。很容易相处。它很快(在大多数情况下) 以及: (规则:始终以尽可能高的级别工作。)我建议您坚持使用plist,因为您的数据很少会发生更改,而且当数据发生更改时,它将由开发人员驱动
因为我也不知道你到底遇到了什么样的限制,核心数据可能是解决方案,但我猜不会。如果对象关系是您处理的最大困难,那么您应该仔细阅读,将整个对象树存储在一个表单中,该表单可以轻松地保存为捆绑包中的资源,并在必要时重新创建。答案很简单。如果不需要持久化为过时的格式(如MSWord等),那么应该使用核心数据。原始SQLite是一个令人头痛的问题,99.999%的时间不值得付出努力 核心数据比PLIST更高效,并且在项目不断发展的情况下允许更大的灵活性 使用OSX机器预填充核心数据sqlite文件也非常容易;您知道,首先用于开发应用程序的机器:)
NNW的用例是这条规则的一个独特例外,如果我是一个赌徒,我打赌会引起核心数据团队的注意,并将在未来的更新中得到纠正。顺便说一下,如果您使用核心数据,您将免费获得更新。我建议使用纯SQLite。它更简单,更易于维护,并且您可以使用许多流行的GUI编辑器在非mac系统上构建数据库。对我来说,使用核心数据仍然是一种痛苦。从静态SQlite数据库填充TableView的代码简单、直观且透明,虽然核心数据需要更多的样板代码,而这些代码一开始你甚至都不完全理解,而且总体上有很多隐藏的复杂性,而你并不真正需要。因为你已经在使用OS X来编写iPhone应用程序,所以预填充参数是有缺陷的。编写一个核心数据桌面应用程序来预填充数据,这绝非易事。SQLite太复杂了,除了NNW依赖于数据来自何处之外,在任何情况下都无法在核心数据上使用它。并非所有数据都是在OS X机器上开始使用的。我不同意写一个Mac OS X Core data桌面应用程序来管理他的数据是“微不足道的”,特别是当我们不知道这些数据是什么样子的时候。通过Perl或Python脚本填充数据库可能更容易,在这种情况下,SQLite可能更容易。在不知道问题到底在做什么的情况下,我不明白为什么有人会声称核心数据绝对是一个优秀的解决方案。核心数据可以使用应用程序包中的只读数据。它甚至可以将应用程序包中的一部分存储设置为只读,将文档目录中的另一部分设置为读写。没有理由对核心数据使用对象归档。我删除了第2点,但第1点仍然有效。调用
archiveRootObject:toFile:
,unarchiveObjectWithFile:
将比设置模型、托管对象、持久存储等简单得多。不过,您在回答中提出的要点可能胜过我的第一个理由。你赢了这一轮,Zarra。我不明白iPhone开发人员怎么会说当t