Core Data Features(Apple官方文档译文)

原文地址:https://developer.apple.com/library/mac/documentation/cocoa/Conceptual/CoreData/Articles/cdTechnologyOverview.html#//apple_ref/doc/uid/TP40009296-SW2

Core Data框架对“对象图(object graph)”和对象生命周期提供了广泛的、自动化的解决方案。它有如下特点:

1、对数据更改的undo和redo支持

Core Data提供了内置的undo和redo管理系统,其能力远超普通的文本编辑里的undo和redo。

2、对象之间关系的维系

Core Data管理着数据更改的方法,包括对象之间relationships(对象属性表之间的关系对象)的一致性。

3、属性值的自动验证

Core Data的Managed objects对标准的键值编码作了延伸,并保证其“值”能在合理有意义的范围内

4、数据表迁徙

在处理以往开发和运行时的数据库迁徙也许很困难。但是Core Data的内置图形化迁徙工具将简化您的数据表的迁徙工作。

5、可在新建工程时勾选是否支持Core Data

Core Data提供了的NSFetchedResultsController类同时支持iOS和OS X开发。

6、完美的、自动的支持KVO和KVC机制。

不仅仅支持KVO、KVC机制,而且还有类之间“一对多”关系的支持。

7、在内存和界面上支持分组,过滤和组织数据。

8、支持自动将对象存储在外部数据存储库。

9、支持复杂的查询。

不用写SQL语句,你也能通过NSPredicate类来创建复杂的查询语句。NSPredicate支持一些基本的查询,子查询,和高级的SQL语句查询,并且在CoreData中,它还高效的支持Unicode,自动寻址搜索,排序,正则表达式。

10、Merge策略

CoreData内置的数据版本管理乐观锁能很好的应对“多次写入”冲突的发生。

为什么您应该选择CoreData

有许多理由选择使用CoreData,一个最简单的理由是,相比于之前用代码编写model层,它能将您之前的工作量减少50%~70%.并且上面列出的这些特性,都不用你自己实现,也不用你去自己写test,甚至不用你自己优化(这点不同意,妈的还是要优化啊!)。

CoreData有一个成熟的代码库,其质量是通过了单元测试的,并且每天都数以百万的用户在各式各样的app中使用它。这套框架已经被高度优化了几个版本。它利用的model提供的资料和运行时特性,不会被应用程序级别的代码取代。此外,除了提供优秀的安全性和错误处理,它还提供最好了的内存冲突解决方案。换句话说,你可以把你主要的精力放在自己的核心代码上面。CoreData虽然性能优越,但不会向你收取任何费用,他是完全免费的。

CoreData不是

在说了CoreData能做什么之后,我们来说说CoreData不能做什么。

1、CoreData不是关系型数据库,也不是关系型数据库系统(RDBMS)

CoreData虽然提供了一个基础框架来管理和持久化对象到本地,并且SQLite也是他持久化的一种方法。但它并不是数据库本身。(特别注意,好比你能使用Coredata对数据进行跟踪和管理,但是它实际上没有把任何数据被保存在文件中,都是SQLite做的)。

2、CoreData不是全能神。

CoreData也不能让你一点代码都不写,即便它已经可以使用界面来进行复杂的数据建模,但是实际应用中仍然需要编写代码。

3、CoreData不依赖Cocoa捆绑

CoreData虽然与Cocoa集成很好,并且一起使用可以显著降低必须的代码数量,但是它也可以脱离cocoa单独使用。你可以很容易地创建一个没有用户界面Coredata应用程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值