Как загрузить tableView с массивом словарей? - PullRequest
1 голос
/ 28 мая 2011

Я хочу загрузить табличное представление с массивом, который сам имеет несколько словарей.В каждом из этих словарей есть элементы, которые мне нужно поместить в строку, по одному словарю на строку.Все эти словари хранятся в массиве.

Как мне выполнить эту задачу?

Спасибо,

См. Код ниже, проекты - это мой массив.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
   // id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return self.projects.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    [self configureCell:cell atIndexPath:indexPath];

    return cell;
}

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {

    cell.textLabel.text = [self.projects objectAtIndex:indexPath.row];
}

Ответы [ 2 ]

4 голосов
/ 28 мая 2011

Вы можете сделать это в значительной степени с тем, что у вас есть.Вам просто нужно изменить метод configureCell:atIndexPath:, чтобы он выглядел примерно так:

cell.textLabel.text = [[self.projects objectAtIndex:indexPath.row] objectForKey:@"some_key"];

Просто замените some_key на ключ в NSDictionary, который вы хотите отобразить в вашем UITableViewCell.

Вы также можете изменить свой стиль UITableViewCell на UITableViewCellStyleSubtitle, а затем добавить еще один ключ от NSDictionary до cell.detailTextLabel.

0 голосов
/ 19 августа 2013

В дополнение к edc1591,

В случае, если словари в массиве имеют разные ключи, тогда

  if([[self.projects objectAtIndex:indexPath.row] count]==1)

   {
     id key= [[[self.projects objectAtIndex:indexPath.row] allKeys] objectAtIndex:0];
     cell.textLabel.text = [[self.projects objectAtIndex:indexPath.row] objectForKey:key];
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...