代码之家  ›  专栏  ›  技术社区  ›  Shizam

核心数据,对一到多个子对象进行排序

  •  10
  • Shizam  · 技术社区  · 14 年前

    山姆

    2 回复  |  直到 10 年前
        1
  •  11
  •   Tim Isganitis    14 年前

    山姆,

    如果我正确地阅读了您的问题,那么您希望设置一个fetch,返回特定父级的子级的排序列表。为此,我将为“children”实体设置一个fetch,然后使用谓词来限制结果:

    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:[NSEntityDescription entityForName:@"children" inManagedObjectContext:moc]];
    [request setSortDescriptors:[NSArray initWithObject:[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES]];
    [request setPredicate:[NSPredicate predicateWithFormat:@"(parent == %@)", parent]];
    

    显然,您的实体和属性名称可能不同。在最后一行中,parent变量应该是对您想要其子对象的父对象的NSManagedObject实例的引用。

        2
  •  16
  •   shosti    14 年前

    如果您只想使用NSArray,而不是NSFetchedResultsController,还有另一种方法:

    NSSortDescriptor *alphaSort = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
    NSArray *children = [[parent.children allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:alphaSort]];