我有两个实体,工作和客户端。从工作到客户的关系称为 clientOfJob ,这是一种多对一的关系:
Job<<-->Client
我试图理解如何将我的获取结果排序为表视图的部分,其中的部分基于客户端名字。
这是我第一次尝试使用sectionNameForKeyPath,但是我使用了来自CoreDataBooks的示例代码,到目前为止,替换了一些代码已经消除了我今天早些时候遇到的一些严重问题。
这是我试过的代码。我认为它不会起作用,但我不确定我需要使用什么来为客户端排序描述符键和sectionNameKeyPath。
顺便说一句,代码只适用于jobSortDescriptor(没有clientSortDescriptor)并且sectionNameKeyPath设置为nil。然后它只按职务描述排序。我可以获取相关的客户端实体信息,将客户端名称信息放入每个单元格的详细文本列表中,同时我在单元格的textLabel中有作业描述。
- (NSFetchedResultsController *) fetchedResultsController {
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Job" inManagedObjectContext:dataInterface.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:10];
NSSortDescriptor *clientSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"clientOfJob.firstName" ascending:YES];
NSSortDescriptor *jobSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"jobDescription" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:clientSortDescriptor, jobSortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:dataInterface.managedObjectContext sectionNameKeyPath:@"clientOfJob.firstName" cacheName:@"Jobs"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[jobSortDescriptor release];
[clientSortDescriptor release];
[sortDescriptors release];
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved Error %@, %@", error, [error userInfo]);
abort();
}
return fetchedResultsController;
}