ios NSFetchRequest,对子对象进行排序

| 嗨,我想知道如何指定FetchRequest,以便可以在关系中对对象进行排序。
   |  Parent         |        | Child        |
   |     - name      |------->|   - name     |
   |     - position  |        |   - position |
例如,如果我有一个包含位置属性的父表,并且与一个也具有位置属性的子表具有一对多关系。如何返回包含按位置排序的子对象的父对象(按位置排序)。 例如
parent 1
   child 1
   child 2
   child 3

parent 2
   child 15
   child 16

parent 3
   child 22
   child 23
   child 24
显然,以下代码将正确排序父对象,但是如何使随每个父对象返回的子对象的顺序正确
    NSFetchRequest* fetchReqest = [[NSFetchRequest alloc] init];

    NSEntityDescription* entity = [NSEntityDescription entityForName:@\"parent\"  inManagedObjectContext:managedObjectContext];
    [fetchReqest setEntity:entity];  

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
                                        initWithKey:@\"position\" ascending:YES];
    [fetchReqest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
    [sortDescriptor release];

    NSArray* parentsThatContainChildren =  [managedObjectContext executeFetchRequest:fetchReqest error:nil];
干杯     
已邀请:
有两种策略: 使用NSSortDescriptor对子项执行单独的提取请求。优点:将其保存在FetchController中。缺点:多个提取请求可能会使您慢下来 对NSArray * parentThatContainChildren中返回的孩子进行排序。 对于#2,您可以查看以下内容:
NSSortDescriptor *positionSort = [NSSortDescriptor sortDescriptorWithKey:@\"position\" ascending:YES];

NSArray *children = [[parent.children allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:positionSort]];
    

要回复问题请先登录注册