Core Data Features(Apple官方文档译文)
2014-09-25 20:33
218 查看
原文地址: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应用程序
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应用程序
相关文章推荐
- Core Data Basics(Apple官方文档的译文)
- (apple官方文档译文)深入理解表视图的单元格(cells)- A Closer Look at Table View Cells
- (apple官方文档译文)表视图样式和扩展视图-Table View Styles and Accessory Views
- Core Animation Introduction(apple官方文档翻译与学习01)
- Core Animation Basics(apple官方文档翻译与学习02)
- reactor官方文档译文(2)Reactor-core模块
- (apple官方文档译文)ios应用开发当中的表视图
- iOS Apple 官方文档 开始 地址
- 【Spark 2.0官方文档】Spark SQL、DataFrames以及Datasets指南
- Data Binding Guide——google官方文档翻译(上)
- UIAlertView---iOS-Apple苹果官方文档翻译
- 基本控件文档-UITextField属性---iOS-Apple苹果官方文档翻译
- ES权威指南[官方文档学习笔记]-27 Data in, data out
- Data Binding Guide——google官方文档翻译(下)
- Apple官方文档翻译之iOS 文件管理系统
- reactor官方文档译文(1)Reactor简介
- MySQL官方文档14.8.2.1节 — 聚簇索引和二级索引译文
- 16.1 Python 描述符官方文档译文
- Spring Data JPA 指南——整理自官方参考文档
- UIControl事件---iOS-Apple苹果官方文档翻译