当前位置:  开发笔记 > 后端 > 正文

核心数据与SQLite 3

如何解决《核心数据与SQLite3》经验,为你挑选了4个好方法。

我已经非常熟悉关系数据库,并且过去曾使用SQLite(和其他数据库).但是,Core Data具有一定的吸引力,因此我正在考虑花一些时间来学习它以用于我的下一个应用程序.

使用Core Data而不是SQLite有什么好处,反之亦然?每个的优点/缺点是什么?

当Apple没有将它用于许多旗舰应用程序(如Mail.app或iPhoto.app)时,我发现很难证明学习Core Data的成本是合理的 - 而是选择了SQLite数据库.SQLite也广泛用于iPhone.

那些熟悉使用它们的人可以评论他们的经历吗?或许,与大多数事情一样,问题比仅仅使用一个而不是另一个问题更深层次?



1> Barry Wark..:

尽管Core Data是Apple 企业对象框架的后代,但是对象关系映射器(ORM)与关系后端紧密相关,Core Data 不是 ORM.事实上,它是一个对象图管理框架.它管理一个可能非常大的对象实例图,允许应用程序使用一个图形,该图形根据需要通过故障对象进出内存而不能完全适合内存.核心数据还管理对属性和关系的约束,并维护参考完整性(例如,在向关系添加/删除对象时保持向前和向后链接一致).因此,核心数据是构建MVC架构的"模型"组件的理想框架.

为了实现其图形管理,Core Data 恰好使用SQLite作为磁盘存储.它可以使用不同的关系数据库甚至是非关系型数据库(如CouchDB)来实现.正如其他人所指出的,Core Data也可以使用XML或二进制格式或用户编写的原子格式作为后端(尽管这些选项要求整个对象图适合内存).如果您对如何在SQLite后端实现Core Data感兴趣,您可能需要查看OmniGroup的OmniDataObjects框架,这是Core Data API子集的开源实现.所述BaseTen框架也使用PostgreSQL作为后端核心数据API的实现.

由于Core Data并非旨在成为SQLite的ORM,因此无法读取任意SQLite架构.相反,您不应该依赖于能够使用其他SQLite工具读取Core Data的SQLite数据存储; 架构是可能会更改的实现细节.

因此,直接使用Core Data或SQLite之间并没有任何冲突.如果需要关系数据库,请使用SQLite(直接或通过其中一个Objective-C包装器,如FMDB)或关系数据库服务器.但是,您可能仍希望学习Core Data以用作对象图管理框架.结合Apple的控制器类和键值绑定兼容的视图小部件,您可以使用非常少的代码实现完整的MVC架构.


使用iOS 5.0,您可以获得额外的好处,即如果您使用的是Core Data,则可以免费使用iCloud文件同步.如果您直接使用SQLite,则必须进行大量的手动修改和实施才能使其在iCloud中同步.
注意fmdb不是ORM,只是围绕sqlite3 C api的objc包装器
很好的答案.FMDB已经转移到github - https://github.com/ccgus/fmdb - 并且是由NetNewsWire开发人员推荐的:http://inessential.com/2010/02/26/on_switching_away_from_core_data

2> strange..:

使用iOS 5.0,您可以获得额外的好处,即如果您使用的是Core Data,则可以免费使用iCloud文件同步.如果您直接使用SQLite,则必须进行大量的手动修改和实施才能使其在iCloud中同步.


注意:[iCloud糟透了核心数据](http://www.theverge.com/2013/3/26/4148628/why-doesnt-icloud-just-work)
当然可以,但考虑到苹果的骄傲和喜悦,希望他们能够在即将到来的iOS版本中改进.
更新(WWDC 2016之后) - Core Data的iCloud可用性正在被弃用,并且可能在将来退役.更多:http://mjtsai.com/blog/2016/06/17/the-deprecation-of-icloud-core-data/

3> Joel Levin..:

核心数据不是一个数据库引擎,而是一个在实际数据存储上抽象的API.您可以将Core Data保存为sqlite数据库,plist,二进制文件甚至自定义数据存储类型.

我建议学习核心数据,因为它是一个很好的资源,大大加速了可可应用程序开发的许多部分.



4> cefstat..:

SQLite是Core Data的数据库格式之一.使用Core Data可以更好地与Cocoa API的其余部分集成.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有