获取核心数据对象的子对象的属性?

问题描述:

我有一个核心数据对象叫做Workshop。它与Student对象有多对多的关系。获取核心数据对象的子对象的属性?

如何从Workshop对象中获得学生姓氏的NSArray(姓氏是学生的NSString属性)?最好按字母顺序?

警告:未经测试的代码传入

假设两者的车间和学生的实体有一个“name”属性和您的学生的实体有一个名为“工作坊”这是你将如何获取对象的关系:

- (NSArray*) getStudentsForWorkshop:(NSString*) workshopName { 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" 
              inManagedObjectContext:managedObjectContext]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Workshop.name LIKE %@", workshopName]; 
    [fetchRequest setPredicate:predicate]; 
    [fetchRequest setEntity:entity];           

    NSArray *result = [managedObjectContext executeFetchRequest:fetchRequest error:nil]]; 

    NSArray *sortedArray = [NSArray arrayWithArray: [result sortedArrayUsingSelector:@selector(compareStudent:)]]; 
    return sortedArray;  
} 

对于排序,你会实现compareStudent像这样:

- (NSComparisonResult)compareStudent:(NSManagedObject*)otherObject { 
    return [self.name compare:otherObject]; 
}