基于iOS9与iOS10的CoreData技术变化

2017-04-13 15:08:50范宝元
中文信息 2017年2期

摘 要: 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存储容器……

登录APP查看全文