У меня нет опыта работы с CoreDate, но, возможно, класс NSFetchedResultsController
подойдет для вашей задачи.
Если вы не хотите показывать разные сущности в отдельных разделах таблицы, я думаю, что самый простой способчтобы смешать их, нужно использовать один массив для хранения и обработки ваших данных.
Чтобы упростить задачу, вы можете объявить протокол с методами, общими для ваших сущностей (например, атрибут даты), и заставить ваши сущности соответствовать ему:
@protocol MyEntityProtocol
- (NSDate*) date;
@end
Сортировка: Вы можете отсортировать свой массив, например, используя функцию sortedArrayUsingFunction:context:
.
NSInteger entityDateSort(id<MyEntityProtocol> obj1, id<MyEntityProtocol> obj2, void *context){
return [[obj1 date] compare:[obj2 date]];
}
Отображение в табл.Если у вас есть различные типы ячеек для ваших сущностей:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
id ent = [dataArray objectAtIndex:indexPath.row];
UITableViewCell* cell = nil;
if ([ent isKindOfClass:[Entity1 class]]){
// create and/or setup cell for entity1
}
if ([ent isKindOfClass:[Entity2 class]]){
// create and/or setup cell for entity2
}
return cell;
}