iOS 数据持久化之CoreData(三)NSFetchedResultsController +Demo

原创Blog,转载请注明出处
blog.csdn.net/hello_hwc
欢饮关注我的iOS SDK详解专栏
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html


前言

NSFetchedResultsController提供了CoreData与TableView的纽带。通常使用它查询的结果作为tableview的主列表。它查询的结果是基于indexPath的,也就是说定义好了Section和row。直接使用即可。

同样,使用NSFetchController也能够方便的进行

  • 监听ManagedContext中对象的变化,把变化会报给代理
  • 可以使用cache来提高效率

基于这两点,一个controller通常有三种使用NSFetchedResultsController的模式

  1. 不跟踪context-代理为nil
    fetched results controller不会进行对象变化的跟踪
  2. 仅在内存中跟踪context-代理不为nil,cacheName为nil
  3. 完整的跟踪context-代理不是nil,有cacheName

Demo

注:本文不会详细讲述demo的代码,因为写了这么多发现大篇幅的讲解如何实现一个工程的博客,结果貌似没什么人看。

一个很简单的小软件,能够对公司部门进行管理,点开每个部门能看到对应员工的信息。
下载链接
http://download.csdn.net/detail/hello_hwc/8723837


对象图

  • Department表示部门,具有属性名称和楼层
  • Employee表示员工,具有属性名称,年龄和工号。
  • 一个Employee隶属与一个部门,一个部门可以包括多个员工。

如何使用NSFetchedResultsController

创建

Demo中使用的代码

-(NSFetchedResultsController *)fetchedResultsController{
    if (!_fetchedResultsController) {
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:[Department entityName] inManagedObjectContext:[self managedcontext]];
        [fetchRequest setEntity:entity];
        // Specify how the fetched objects should be sorted
        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name"
                                                                       ascending:YES];
        NSSortDescriptor * sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"floor"
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值