Как я могу заполнить UITableViewController из двух разных источников данных?(IPhone) - PullRequest
0 голосов
/ 29 июля 2010

Я использую Базовые данные для хранения данных, и у меня есть 2 сущности , называемые "поездом" и "самолетом".я собрал все предметы в два разных NSMutableArray (один из поездов и один из самолетов).каждый класс имеет атрибут NSDate , и я хочу показать все элементы из массивов только в одном (одном) UITableViewController , отсортированном по дате.Более того, я определил собственный класс tableCells для обработки информации.

У меня вопрос, как я могу показать разные классифицированные объекты в одном UITableViewController, отсортированном по дате?

1 Ответ

0 голосов
/ 29 июля 2010

У меня нет опыта работы с 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;
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...