基于iOS9与iOS10的CoreData技术变化
2017-04-13范宝元


摘 要: CoreData是一个苹果原生的框架,它拥有像数据库一样存储数据的功能,但本身并不是数据库。本文探究了在iOS9与iOS10中CoreData的性能优化和发生的改变,并对这种变化进行相应的封装,以便兼容iOS9和iOS10。
关键词:iOS9 iOS10 CoreData 性能优化
中图分类号:TP273 文献标识码:A 文章编号:1003-9082(2017)02-0009-01
CoreData是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,开发者不需要编写任何SQL语句。在CoreData的技术堆栈主要分为一下几个部分,一个是NSManagedObjectContext管理的模型部分,管理着所有CoreData的托管模型对象;另一个是存储调度器NSPersistentStoreCoordinator,和SQL数据库进行数据交互,负责操纵存储器类NSPersistentStore实现SQLite的本地持久化。这就构成了CoreData的大体结构。在iOS10中,其技术堆栈发生了一些细微变化,详情见下文分析。
一、iOS9中的CoreData
在iOS9中,CoreDataStack是CoreData的核心,由一组CoreData核心对象组成,其技术堆栈图如下所示:
1.NSManagedObjectContext 对象管理上下文: 负责管理模型对象的集合;
2.NSManagedObjectModel 被管理的对象模型: 负责管理对象模型;
3.NSPersistentStoreCoordinator 存储调度器: 负责将数据保存到磁盘的;
其核心部分大致分为两个:一个是对象图管理,另一个是数据持久化;在这两部分的中间,即堆栈中间,是持久化存储协调器(Persistent Store Coordinator, PSC)。通过它将对象图管理部分和持久化部分绑在一起。当这两部分中的一部分需要和另一部分交互,将通过PSC来调节;并且,在iOS9之前,SQLite的文件存储在Documents,在iOS10之后,便把存储地址改为Library/Application/Support中。
二、iOS10中的CoreData
在iOS10中,系統默认生成的是一个CoreData存储容器……
