在iPhone上使用CoreData或SQLite?

由于CoreData在OS 3.0中已经可用于iPhone,它是否意味着数据持久性的答案,并取代所有直接使用SQLite

还有什么理由仍然使用SQLiteSQLiteCoreData什么优点/缺点?

这是一个常见的问题:

  • “核心数据与SQLite经验丰富的开发人员”
  • “核心数据vs Sqlite和性能…”
  • “核心数据vs sqlite3”
  • “是值得使用一个简单的SQLite应用程序的核心数据与iPhone上的一个表,没有关系或复杂的子表/视图?

总之,核心数据可以大大简化您的代码,特别是对于复杂的对象模型。 你几乎可以免费获得撤销/重做支持。 它还提供了一些非常显着的性能优势 ,特别是在iPhone上。 尽pipe看起来有些违反直觉,但是考虑到框架有多less开销,在大多数情况下,使用Core Data可以击败手动调整的SQLite的性能。 在iPhone上,它在批量提取方面做得非常好,以尽量减less内存使用量。

正如指出的那样,一个缺点是,这会限制你为最终用户需要iPhone OS 3.0。 但是,这对我的用户来说并不是什么问题,而且只会越来越less。

这可能是一个较小的好处,但SQLite是更便携的平台之间,因为核心数据是Cocoa的一部分,SQLite是纯C.这意味着,如果你想移植你的应用程序到PC,例如,你会在使用纯SQLite的情况下重写的代码更less。

那么如果你想用本地数据库(不一定与任何iPhone应用程序相关)开发任何其他的跨平台的话,那么你就已经有了一些使用SQLite的经验。

如果您希望您的应用程序在不运行OS 3.0的iPhone上运行,则必须使用SQLite。

然而,使用CoreData(使用SQLite作为后端,我相信)意味着你不必编写自己的数据库交互代码,这是一件相当麻烦的事情,特别是当你正在进行关系等时。

我自己使用CoreData …