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
上方显示部分 B
。 NSFetchedResultsController
也可以吗?
【问题讨论】:
【参考方案1】:您必须在父类中对关系计数进行建模。这可以通过覆盖 NSManagedObject
子类中关系的设置器来自动完成。
【讨论】:
以上是关于nsfetchedresultscontroller 根据项目计数对部分进行排序的主要内容,如果未能解决你的问题,请参考以下文章