【发布时间】:2010-11-19 11:35:46
【问题描述】:
我有一个名为 Workshop 的 Core Data 对象。它与 Student 对象具有一对多的关系。
如何从 Workshop 对象中获取学生姓氏的 NSArray(姓氏是学生的 NSString 属性)?最好按字母顺序?
【问题讨论】:
标签: iphone objective-c core-data ios
我有一个名为 Workshop 的 Core Data 对象。它与 Student 对象具有一对多的关系。
如何从 Workshop 对象中获取学生姓氏的 NSArray(姓氏是学生的 NSString 属性)?最好按字母顺序?
【问题讨论】:
标签: iphone objective-c core-data ios
警告:未经测试的代码传入
假设您的 Workshop 和 Student 实体都具有“名称”属性,并且您的学生实体具有称为“Workshop”的关系,这就是您获取对象的方式:
- (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];
}
【讨论】: