我的核心数据模型有一个实体,其属性称为“部分”。该实体的不同对象可以为“部分”共享相同的值,这意味着它们都属于同一“部分”。 NSFetchedResultsController
现在可以根据这些值显示部分,将所有内容放在一起。这没有问题,但是我现在需要“part”的值来表示不同的东西。我想只获取“part”的不同值并将它们显示在tableView中,确保相同的值不会显示两次。我怎么能这样做?
我很感激一些帮助,Fabian
答案 0 :(得分:0)
好吧,自己想通了。基本上使用partNames
:
NSFetchedResultsController
for (int i = 0; i < [[self.fetchedResultsController sections] count]; i++) {
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:i];
[partNames addObject:[sectionInfo name]];
}
答案 1 :(得分:0)
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController_ != nil) {
return fetchedResultsController_;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"name" cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
NSError *error = nil;
if (![fetchedResultsController_ performFetch:&error]) {
NSLog(@"Unerwarteter Fehler %@, %@", error, [error userInfo]);
abort();
}
return fetchedResultsController_;
}
这将为您提供按名称和组名称排序的所有人,删除重复的值。
-----在创建Fetcgcontroller时,必须提及sectionNameKeyPath * * -----------