2010-02-19 73 views
3

我正在创建一个iPhone应用程序,我试图在持久存储的两种解决方案之间进行选择。核心数据与SQLitePersistentObjects

核心数据或SQLitePersistentObjects。基本上,我所有的应用程序都需要存储一个模型对象数组,然后再次加载它们以显示在UITableView中。它没有太复杂。核心数据似乎比简单使用SQLitePersistentObjects有更高的学习曲线。在我的情况下,使用Core Data over SQLitePersistentObjects有什么明显的好处?

回答

1

看到这个问题。我对这个问题的回答也适用于你的问题。

Core Data VS SQL Statement, which one is gd for iphone development?

+0

它并不是因为SQLitePersistentObjects是一个ORM。 –

+0

这是因为你应该为此使用Apple技术,这就是他们编写Core Data的原因。 OP有时间研究核心数据并理解技术是值得的。 –

+1

你的答案使用裸SQLite来比较使用核心数据。这是一个不正确的比较。 SQLPO!=裸露的SQLite。我同意研究核心数据是好的,但替代方案不应该被忽略。核心数据是苹果API设计黑暗时刻的一个例子。将它与Rails和其他漂亮的ORM中的ActiveRecord进行比较... –

0

最近,我不得不做出同样的决定。我用一些属性来存储一个简单对象的实例。从我的研究中,我明白使用核心数据将帮助您更好地管理具有多种关系的更复杂的对象。我最终只使用了Core Data,因为我想了解更多关于它的知识(但对于简单的对象来说,并没有太多的学习曲线)。

0

SQLitePersistentObjects aka SQLLite持久对象与直接SQLite完全不一样。它本身就是一个ORM。我还没有使用它,但我想纠正上一张海报给出的完全错误的答案。

我正在认真考虑使用,因为核心数据是一个痛苦。

请参见:http://iphonedevelopment.blogspot.com/2008/08/sqlite-persistent-objects.html

+0

以前的答案?现在,你上面的人是编写SQLPO的人,我怀疑你是谁的意思,更可能是因为重新排列了答案。你能指定吗? –

+0

根据我一定提到Marcus S. Zarra的答案的日期。我意识到,使用核心数据是福音,但它仍然充满了错误和烦人的事情,任何人使用,例如,ActiveRecord会讨厌。没有人想听到这个,但被警告。 –

13

由于SQLite的持久性对象的作者,我说:使用核心数据。

当Core Data不存在于手机上时,我编写了SQLPO。虽然我为我在SQLPO上所做的工作感到自豪,尽管我比Core Data更喜欢它的一些方法(特别是不需要维护独立的类文件和数据模型),但Core Data的基础引擎更加成熟,有更多的工程时间投入其中。这就是为什么当Core Data来到iPhone SDK时,我放弃了SQLPO开发。

我还没有做基准测试,但我猜测使用正确的话,Core Data在几乎所有大容量情况下都会表现得更好。

SQLPO的开发速度更快,因为您所做的只是创建头文件,但除非您的数据需求相对较轻,否则我说您最好使用核心数据。

+2

杰夫,你已经放弃了,这太糟糕了,因为平台真正需要的是一个非常棒的ORM,它不是核心数据。 –

1

对我的经验与SQLitePersistentObjects的一些infromation。

最初为使用SQLPO的iOS 3.x开发的应用程序工作得很好。易于使用等 现在我正在把这个应用程序带到iOS 4的过程中,事情开始变得陌生。

我现在看到以不可预知的速率发生数据库损坏。

纵观SQLPO代码,显示只有一个sqlite3_close语句,并且在无法打开数据库时调用此语句。

我打算添加一个方法来明确地关闭数据库,并从我的应用程序委托终止和iOS4 didMovetoBackground方法调用此方法。 可能有助于避免SQLPO数据库损坏问题。