我正在创建一个 iPhone 应用程序,我试图在 2 个持久存储解决方案之间进行选择。
核心数据,或SQLitePersistentObjects。基本上,我的应用程序需要的只是一种存储模型对象数组然后再次加载它们以显示在 UITableView 中的方法。它没什么太复杂的。与简单易用的 SQLitePersistentObjects 相比,Core Data 的学习曲线似乎要高得多。在我的情况下,使用核心数据而不是 SQLitePersistentObjects 有什么明显的好处吗?
我正在创建一个 iPhone 应用程序,我试图在 2 个持久存储解决方案之间进行选择。
核心数据,或SQLitePersistentObjects。基本上,我的应用程序需要的只是一种存储模型对象数组然后再次加载它们以显示在 UITableView 中的方法。它没什么太复杂的。与简单易用的 SQLitePersistentObjects 相比,Core Data 的学习曲线似乎要高得多。在我的情况下,使用核心数据而不是 SQLitePersistentObjects 有什么明显的好处吗?
作为 SQLite Persistent Objects 的作者,我说:使用 Core Data。
当手机上不存在 Core Data 时,我编写了 SQLPO。尽管我为自己使用 SQLPO 所做的事情感到自豪,尽管我确实比 Core Data 更喜欢它的方法(特别是不必维护单独的类文件和数据模型),但 Core Data 底层的引擎要成熟得多,并且投入了更多的工程时间。这就是为什么当 Core Data 来到 iPhone SDK 时我放弃了 SQLPO 开发。
我还没有做过基准测试,但我猜如果使用正确,Core Data 在几乎所有大容量情况下都会表现得更好。
SQLPO 的开发速度更快,因为您所做的只是创建头文件,但除非您的数据需求相对较少,否则我说您最好使用 Core Data。
看到这个问题。我对这个问题的回答也适用于你。
关于我使用 SQLitePersistentObjects 的经验的一些信息。
最初使用 SQLPO 为 iOS 3.x 开发的应用程序运行良好。易于使用等。现在我正在将此应用程序带到 iOS 4 的过程中,事情开始变得奇怪。
我现在看到数据库损坏的速度不可预测。
查看 SQLPO 代码显示只有一个 sqlite3_close 语句,当数据库无法打开时调用该语句。
我计划添加一个方法来显式地关闭数据库并从我的应用程序委托终止和 iOS4 的 didMovetoBackground 方法中调用它。可能有助于避免 SQLPO 的数据库损坏问题。
我最近不得不做出同样的决定。我正在存储具有几个属性的简单对象的实例。根据我的研究,我了解到使用 Core Data 将帮助您更好地管理具有多种关系的更复杂的对象。我最终使用 Core Data 只是因为我想了解更多有关它的信息(但对于简单的对象,没有太多的学习曲线)。
SQLitePersistentObjects aka SQLLite Persistent Objects 与直接使用 SQLite 完全不同。它本身就是一个 ORM。我还没有使用它,但我想更正上一张海报给出的完全错误的答案。
我正在认真考虑使用,因为 Core Data 很痛苦。
见:http: //iphonedevelopment.blogspot.com/2008/08/sqlite-persistent-objects.html