虽然Core Data是Apple的后代 企业对象框架 ,一个与关系后端紧密相关的对象关系映射器(ORM),核心数据是 不 一个ORM。事实上,它是一个对象图管理框架。它管理一个可能非常大的对象实例图,允许应用程序使用一个图形,该图形根据需要通过故障对象进出内存而不能完全适合内存。核心数据还管理对属性和关系的约束,并维护参考完整性(例如,当向/从关系添加/移除对象时保持前向和后向链接一致)。因此,核心数据是构建MVC架构的“模型”组件的理想框架。
实现其图形管理,核心数据 发生 使用SQLite作为磁盘存储。它 可以 已使用不同的关系数据库甚至非关系数据库(如 CouchDB的 。正如其他人所指出的,Core Data也可以使用XML或二进制格式或用户编写的原子格式作为后端(尽管这些选项要求整个对象图适合内存)。如果您对如何在SQLite后端实现Core Data感兴趣,您可能想要查看OmniGroup的 OmniDataObjects 框架,Core Data API子集的开源实现。该 BaseTen 框架也是使用PostgreSQL作为后端的Core Data API的实现。
由于Core Data并非旨在成为SQLite的ORM,因此无法读取任意SQLite架构。相反,您不应该依赖于能够使用其他SQLite工具读取Core Data的SQLite数据存储;架构是可能会更改的实现细节。
因此,直接使用Core Data或SQLite之间并没有任何冲突。如果您需要关系数据库,请使用SQLite(直接或通过Objective-C包装器之一,如 FMDB ),或关系数据库服务器。但是,您可能仍希望学习Core Data以用作对象图管理框架。结合Apple的控制器类和键值绑定兼容的视图小部件,您可以实现完整的MVC架构 非常 小代码。
核心数据不是一个数据库引擎,而是一个在实际数据存储上抽象的API。您可以将Core Data保存为sqlite数据库,plist,二进制文件甚至自定义数据存储类型。
我建议学习核心数据,因为它是一个很好的资源,大大加速了可可应用程序开发的许多部分。
使用iOS 5.0,您可以获得额外的好处,即如果您使用的是Core Data,则可以免费使用iCloud文件同步。如果您直接使用SQLite,则必须进行大量的手动修改和实施才能使其在iCloud中同步。
SQLite是Core Data的数据库格式之一。使用Core Data可以更好地与Cocoa API的其余部分集成。