【发布时间】:2012-03-08 16:16:09
【问题描述】:
我的模型事件中有一个父实体。还有两个子实体:生日、周年纪念日。我正在使用核心数据中内置的实体继承功能,例如生日和周年纪念的父对象是事件。
所以我使用以下方法进行提取:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"start_date" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
etc...
现在我想按事件类型、生日或周年纪念对 fetchedObjects 进行排序。
我该怎么做?我试过了:
for (Birthday *birthday in _fetchedResultsController.fetchedObjects){
[birthdayObjects addObject:birthday];
}
for (Anniversary *anniversary in _fetchedResultsController.fetchedObjects){
[anniversaryObjects addObject:anniversary];
}
但这只是将 fetchedObjects 中的所有对象添加到每个数组中。
有什么想法吗?或者我是不是走错了路?
更新:
用这个解决了:
for (Event *event in _fetchedResultsController.fetchedObjects){
if ([event isKindOfClass:[Birthday class]]){
[birthdayObjects addObject:event];
}else{
[anniversary addObject:event];
}
}
但如果有更好的方法我愿意接受!谢谢。
【问题讨论】:
-
为@"class"添加另一个排序描述符..这可能会起作用
-
[obj valueForKey:@"class"] 确实给了我正确的类名。嗯....我没有一个项目可以立即满足您的条件。
-
我会使用
isKindOfClass:方法;将其发布为您自己问题的答案,以供将来参考。
标签: ios core-data nsfetchedresultscontroller