ios NSFetchedResultsController的使用

NSFetchedResultsController是一个联系CoreData和TableView类,方便地将数据显示到table中,不需要自己去将CoreData中的数据做分区,然后显示。


- (NSFetchedResultsController *)fetchedResultsController

{

    if (nil != _fetchedResultsController) {

        return _fetchedResultsController;

    }

    

    NSManagedObjectContext *context = [self.contactsData managedObjectContext];    //获取NSManagedObjectContext

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];    //初始化一个NSFetchRequest

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contacts" inManagedObjectContext:context];

    [fetchRequest setEntity:entity];

    NSError *error;

    

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name"ascending:YES];    //设置用来排序的key

    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

    

    //    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"shengxiao == %@", self.team];      //设置从CoreData中取数据的过滤器,即一个谓词,很强大的东西

    //    [fetchRequest setPredicate:predicate];

    [fetchRequest setFetchBatchSize:20];

    

    NSString *sectionNameKey = [self.contactsData GetSectionNameKey];

    _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:sectionNameKey cacheName:@"ContactsCache"];     //设置按哪个key来进行分区,如果设置为nil的话,就是不分区

    _fetchedResultsController.delegate = self;

    

    if (![_fetchedResultsController performFetch:&error]) { //最后就是执行fetch,即将上面所有的设置生效

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

        abort();

    }

    return _fetchedResultsController;

}


很方便的类,给我省了很多事情。之前不知道有这个类,就自己手动去从CoreData取了数据,然后分区,再显示到tableView,太麻烦。苹果于是做了这么一个类帮我们省了很多事。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值