获取核心数据对象的子对象的属性?
Posted
技术标签:
【中文标题】获取核心数据对象的子对象的属性?【英文标题】:Getting at a Core Data object's sub-object's properties? 【发布时间】:2010-11-19 11:35:46 【问题描述】:我有一个名为 Workshop 的 Core Data 对象。它与 Student 对象具有一对多的关系。
如何从 Workshop 对象中获取学生姓氏的 NSArray
(姓氏是学生的 NSString
属性)?最好按字母顺序?
【问题讨论】:
【参考方案1】:警告:未经测试的代码传入
假设您的 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];
【讨论】:
以上是关于获取核心数据对象的子对象的属性?的主要内容,如果未能解决你的问题,请参考以下文章
通过对象的枚举属性使用 NSPredicate 获取核心数据托管对象的问题