nsfetchedresultscontroller 根据项目计数对部分进行排序

Posted

技术标签:

【中文标题】nsfetchedresultscontroller 根据项目计数对部分进行排序【英文标题】:nsfetchedresultscontroller sort sections base on item count 【发布时间】:2016-04-16 10:36:23 【问题描述】:

我使用下面的代码从一个国家/地区的branch 表中获取结果:

- (NSFetchedResultsController *)fetchedResultsController

    if (_fetchedResultsController != nil)
    
        return _fetchedResultsController;
    

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"BranchData" inManagedObjectContext:[BRCoreRepository instance].managedObjectContext];
    [fetchRequest setEntity:entity];

    [fetchRequest setFetchBatchSize:5];

    NSString *cache = nil;

    if (searchValue.length > 0)
        fetchRequest.predicate =[NSPredicate predicateWithFormat:@" city contains[cd] %@ || address contains[cd] %@ || branchCode contains[cd] %@ ",searchValue,searchValue,searchValue];
     else cache = @"_preditc_state";

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"branchState" ascending:YES];
    [fetchRequest setSortDescriptors:@[sortDescriptor ]];

    _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                                    managedObjectContext:[BRCoreRepository instance].managedObjectContext
                                                                      sectionNameKeyPath:@"branchState"
                                                                               cacheName:cache
                                 ];
    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;

在当前代码中,我可以根据分支的branchState 创建部分。它工作正常,但我还有另一个问题 - 我也想根据部分项目数订购项目。因此,如果在状态 B 我们有 200 个项目,但在部分 A 我们在结果中有 150 个项目,我们将在部分 A 上方显示部分 BNSFetchedResultsController 也可以吗?

【问题讨论】:

【参考方案1】:

您必须在父类中对关系计数进行建模。这可以通过覆盖 NSManagedObject 子类中关系的设置器来自动完成。

【讨论】:

以上是关于nsfetchedresultscontroller 根据项目计数对部分进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 应用程序中调用 performFetch 后,是不是需要手动更新表视图?