iOS面试题:了解CoreData
2019-05-25 本文已影响111人
iOS猿_员
CoreData的介绍:
- CoreData是面向对象的API,CoreData是iOS中非常重要的一项技术,几乎在所有编写的程序中,CoreData都作为数据存储的基础。
- CoreData是苹果官方提供的一套框架,用来解决与对象声明周期管理、对象关系管理和持久化等方面相关的问题。
- 大多数情况下,我们引用CoreData作为持久化数据的解决方案,并利用它作为持久化数据映射为内存对象。提供的是对象-关系映射功能,也就是说,CoreData可以将Objective-C对象转换成数据,保存到SQL中,然后将保存后的数据还原成OC对象。
CoreData的特征:
- 通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量。
- 将对象数据存储在SQLite数据库已获得性能优化。
- 提供NSFetchResultsController类用于管理表视图的数据,即将Core Data的持久化存储在表视图中,并对这些数据进行管理:增删查改。
- 管理undo/redo操纵;
- 检查托管对象的属性值是否正确。
Core Data的6成员对象
-
NSManageObject:
被管理的数据记录Managed Object Model是描述应用程序的数据模型,这个模型包含实体(Entity)、特性(Property)、读取请求(Fetch Request)等。 -
NSManageObjectContext:
管理对象上下文,持久性存储模型对象,参与数据对象进行各种操作的全过程,并监测数据对象的变化,以提供对undo/redo的支持及更新绑定到数据的UI。 -
NSPersistentStoreCoordinator:
连接数据库的Persistent Store Coordinator相当于数据文件管理器,处理底层的对数据文件的读取和写入,一般我们与这个没有交集。 -
NSManagedObjectModel:
被管理的数据模型、数据结构。 -
NSFetchRequest:
数据请求; -
NSEntityDescription:
表格实体结构,还需知道.xcdatamodel文件编译后为.momd或者.mom文件。
Core Data的功能
- 对于KVC和KVO完整且自动化的支持,除了为属性整合KVO和KVC访问方法外,还整合了适当的集合访问方法来处理多值关系;
- 自动验证属性(property)值;
- 支持跟踪修改和撤销操作;
- 关系维护,Core Data管理数据的关系传播,包括维护对象间的一致性;
- 在内存上和界面上分组、过滤、组织数据;
- 自动支持对象存储在外部数据仓库的功能;
- 创建复杂请求:无需动手写SQL语句,在获取请求(fetch request)中关联NSPredicate。NSPreadicate支持基本功能、相关子查询和其他高级的SQL特性。它支持正确的Unicode编码、区域感知查询、排序和正则表达式;
- 延迟操作:Core Data使用 懒加载(lazy loading)方式减少内存负载,还支持部分实体化延迟加载和复制对象的数据共享机制;
- 合并策略:Core Data内置版本跟踪和乐观锁(optimistic locking)来支持多用户写入冲突的解决,其中,乐观锁就是对数据冲突进行检测,若冲突就返回冲突的信息;
- 数据迁移:Core Data的Schema Migration工具可以简化应对数据库结构变化的任务,在某些情况允许你执行高效率的数据库原地迁移工作;
- 可选择针对程序Controller层的集成,来支持UI的显示同步Core Data在IPhone OS之上,提供NSFetchedResultsController对象来做相关工作,在Mac OS X上我们用Cocoa提供的绑定(Binding)机制来完成的。
更多:iOS面试题大全