我正在创建一个iPhone应用程序,我想知道Core Data是否比SQLite数据库更适合只读数据。感觉就像SQLite DB是更好的选择,是吗?我甚至可以预先填写Core Data存储空间吗?
基本上,我需要3个表,每个表有一堆(最多3000个)实体。然后,我想在TableViews中列出数据,搜索它或为其他目的加载东西。
在这种情况下我应该或可以使用核心数据吗?
答案 0 :(得分:13)
如果您将在表格视图中显示只读数据,那么仅仅由于NSFetchedResultsController,使用Core Data而不是SQLite会有很大的优势。这个便利类使得在表视图中显示数据库元素变得非常容易,并且它可以为您处理批量提取。批量提取允许您仅在屏幕上加载所需的信息,从而显着改善除最小数据集之外的所有数据集的加载时间和内存使用情况。
出于这个原因,我将Core Data用于我在应用程序包中提供的只读信息,以及我可以与存储在用户应用程序数据中的可写数据库共享数据模型的事实。我的建议是使用Core Data,除非你绝对需要定位iPhone OS 2.x设备。
答案 1 :(得分:10)
答案 2 :(得分:2)
你绝对可以 在你的应用中发布一个预先填充的核心数据存储,就像预先填充的SQLite数据库一样,或者包含所有数据的大plist(尽管听起来像不适合这种情况)或其他什么。
核心数据很好,因为它是所有本机Cocoa,它处理从数据库到本机对象的所有加载,它被无情地优化,等等。但是那里还有很多代码可以做你不关心的事情:处理修改,保存更改,撤消和重做支持等等。所以这种方式确实没有明显正确的答案。
很多将取决于您的核心数据和替代品的舒适程度。您是否乐于使用SQLite API(或许多Cocoa wrappers之一)来获取数据?如果是这样,那么这可能会更简单。如果让核心数据为你做ORM将是一个巨大的胜利,那么就这样。另一方面,使用Core Data的复杂查询使用谓词API,这可能比使用SQLite使用裸SQL更复杂。那种事。
答案 3 :(得分:2)
根据它们的关系,你可能最好从plist中读取只读数据。 Plist很容易加载/保存(它们变成NSDictionaries)并且可能更容易编辑
答案 4 :(得分:-8)
核心数据使用SQLite(以及其他选项),因此您的问题有些缺陷。