获取核心数据对象的子对象的属性?
问题描述:
我有一个核心数据对象叫做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];
}