如何从两个不同的数据源填充UITableViewController? (苹果手机)

时间:2010-07-29 13:01:44

标签: uitableview

我使用核心数据来存储数据,我有 2个实体,名为“train”和“airplane”。我把所有物品都装进了两个不同的NSMutableArray (其中一列火车和一架飞机)。每个类都有 NSDate属性,我想在按日期排序的一个(单个)UITableViewController 中显示数组中的所有项目。此外,我定义了自己的tableCells类来处理信息。

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

1 个答案:

答案 0 :(得分:0)

我没有使用CoreDate的经验,但可能NSFetchedResultsController课程适合您的任务。

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

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

@protocol MyEntityProtocol    
- (NSDate*) date;
@end
  1. 排序:您可以使用sortedArrayUsingFunction:context:函数对数组进行排序。

    NSInteger entityDateSort(id<MyEntityProtocol> obj1, id<MyEntityProtocol> obj2, void *context){      
        return [[obj1 date] compare:[obj2 date]];
    }
    
  2. 在表格中显示。如果您的实体有不同类型的单元格:

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