美文网首页
关于总结CoreData的不同见解,CoreData你深入了解了

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

作者: DOU_SHA_BAO | 来源:发表于2016-08-17 18:29 被阅读66次

    什么是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的存储的数据,方法很多,下面提出一个快捷方法,不知道会不会引起大问题,如果有,请友情提醒。

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

    下面附上代码链接。

    代码下载地址

    下载麻烦点个星

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

    相关文章

      网友评论

          本文标题:关于总结CoreData的不同见解,CoreData你深入了解了

          本文链接:https://www.haomeiwen.com/subject/tckpsttx.html