关于总结CoreData的不同见解,CoreData你深入了解了

2016-08-17  本文已影响66人  DOU_SHA_BAO

什么是CoreData?

CoreData是iOS5之后,苹果原生的用于对象化管理数据,并且持久化的框架。

CoreData的原理是什么?

CoreData的技术堆栈是CoreData Stack,主要包括

NSManagedObjectContext 对象管理上下文: 负责管理模型的对象的集合

NSManagedObjectModel 被管理的对象模型: 负责管理对象模型

NSPersistentStoreCoordinator 存储调度器: 负责将数据保存到磁盘的

它们三个之间的关系,大概如下:

CoreData的增删改查,大家都已经熟悉,这里主要介绍的是NSFetchedResultsController与CoreData的混用。NSFetchedResultsController是用来管理查询结果的功能类控制器,为TableView而生。

NSFetchedResultsController如何与tableView关联?

通过在tableView数据源的方法来取出数据来给cell的属性赋值。

id<NSFetchedResultsSectionInfo> info = self.fetchController.sections[indexPath.section];

//取出数据

Contect *contect = [info objects][indexPath.row];

cell.textLabel.text = contect.name;

cell.detailTextLabel.text = contect.phoneNum;

NSFetchedResultsController的代理有很多:

controller didChangeObject:atIndexPath: forChangeType: newIndexPath:(控制器里的模型对象发生改变时调用,会告诉你之前和之后的索引,改变类型(插入/移动/删除等)

controller:didChangeSection:atIndex:forChangeType:(对象模型section改变时调用)

只要运用得当,会大大提高编码效率。

CoreData有个直接获取对应objectID的数据,不过一定要在储存之后调用,因为每次储存后,objectID都会改变.

先保存objectID

self.objectID = [p objectID];p为需要对象

之后就可以根据这个objectID去获取p了。

网上对清空CoreData的存储的数据,方法很多,下面提出一个快捷方法,不知道会不会引起大问题,如果有,请友情提醒。

流行的思路是全部查找,然后删除。当数据量大时,这样效率会比较低;所以可以试试直接把表或者数据库全删除了。再重建一个名字,路径一样的数据库。亲测比较快。

下面附上代码链接。

代码下载地址

下载麻烦点个星

本文为原创,转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读