如何从两个不同的数据源填充UITableViewController?(iPhone)

如何从两个不同的数据源填充UITableViewController?(iPhone),uitableview,Uitableview,我使用核心数据来存储数据,我有两个实体,称为火车和飞机。我把所有的东西都放进了两个不同的NSMUTABLE数组,一个是火车,一个是飞机。每个类都有NSDate属性,我想只在一个UITableViewController中显示数组中按日期排序的所有项。此外,我还定义了自己的tableCells类来处理信息 我的问题是如何在单个UITableViewController中按日期排序显示不同的分类对象 我没有CoreDate方面的经验,但可能NSFetchedResultsController类适合您

我使用核心数据来存储数据,我有两个实体,称为火车和飞机。我把所有的东西都放进了两个不同的NSMUTABLE数组,一个是火车,一个是飞机。每个类都有NSDate属性,我想只在一个UITableViewController中显示数组中按日期排序的所有项。此外,我还定义了自己的tableCells类来处理信息


我的问题是如何在单个UITableViewController中按日期排序显示不同的分类对象

我没有CoreDate方面的经验,但可能NSFetchedResultsController类适合您的任务

如果您不想在单独的表部分中显示不同的实体,我认为混合它们的最简单方法是使用单个数组来存储和处理数据

为了简化操作,您可以使用实体通用的方法(例如日期属性)声明协议,并使实体符合该协议:

@protocol MyEntityProtocol    
- (NSDate*) date;
@end
排序:您可以使用SorterDarrayUsingFunction:context:function对数组进行排序

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;
}