特殊核心数据获取

时间:2010-11-28 15:51:47

标签: iphone objective-c xcode core-data

我的核心数据模型有一个实体,其属性称为“部分”。该实体的不同对象可以为“部分”共享相同的值,这意味着它们都属于同一“部分”。 NSFetchedResultsController现在可以根据这些值显示部分,将所有内容放在一起。这没有问题,但是我现在需要“part”的值来表示不同的东西。我想只获取“part”的不同值并将它们显示在tableView中,确保相同的值不会显示两次。我怎么能这样做?

我很感激一些帮助,Fabian

2 个答案:

答案 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 * * -----------