2011-03-31 82 views
1

我有一个多对多,并想对此排序,以便(事件)标题是keyPath列表关联(人)下面的名称,包括重复的情况下。像这样的东西。核心数据许多排序取

数据模型描述
事件< < ---- >>人,逆关系是“事件”和“人”每一个单独的属性和EVENTTITLE PERSONNAME。

eventTitle1
personNameA
personNameB
eventTitle2
personNameA
personNameC

我已经到一个fetchRequests工作和分类上的keyPath与sortDescriptors。对于许多人来说,需要采取不同的方式以这种方式进行工作。这是足够的信息吗?第一篇文章,任何/所有的援助非常感谢。

+0

如果我理解正确,您想获取“事件”实体并根据它们的eventTitle属性对它们进行排序。因此,您将为这些实体设置您的排序描述符,与您为一对一提取相同,因为eventTitle是一对一属性。然后,通过检索的“事件”实体访问“人员”实体。那不行? – Wienke 2011-04-01 01:36:50

+0

谢谢Wienke!是的,这正是我想要使用提供的表视图方法来显示。我没有看到如何做FRC的最后一部分,一直在尝试一些事情,它不适合我。你能再给我多一点吗? – sjohnson 2011-04-01 04:27:47

回答

5

我会得到获取“Person”实体的提取请求,然后按事件进行排序,然后进行排序。有点像这样。

NSSortDescriptor *eventSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"event.name" 
                    ascending:ascending 
                     selector:@selector(caseInsensitiveCompare:)]; 

NSSortDescriptor *personSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" 
                    ascending:ascending 
                    selector:@selector(caseInsensitiveCompare:)]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:eventSortDescriptor, personSortDescriptor, nil]; 


NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" 
              inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                          managedObjectContext:self.managedObjectContext 
                           sectionNameKeyPath:@"event.name" 
                             cacheName:cacheName]; 
+0

给了你正确的答案。我忘记了NSFetchRequest可以让你一次排列多个层次 - 这就是为什么它需要一个排序描述符而不是一个排序描述符。 – Wienke 2011-04-01 15:34:22

+0

你是男人丹!谢谢你们的帮助! – sjohnson 2011-04-01 16:42:50