如何使用字典数组加载tableView?

时间:2011-05-28 02:11:55

标签: objective-c cocoa-touch ios uitableview

我想加载一个包含数组的表视图,该数组本身有多个字典。这些词典中的每一个都有我需要放入一行的项目,每行一个词典。所有这些词典都存储在一个数组中。

我该如何执行此任务?

谢谢,

请参阅下面的代码,项目是我的数组。

- (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 个答案:

答案 0 :(得分:4)

你可以用你拥有的东西来做到这一点。您只需要将configureCell:atIndexPath:方法更改为如下所示:

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

只需将some_key更改为NSDictionary中要显示在UITableViewCell中的密钥。

您还可以将UITableViewCell样式更改为UITableViewCellStyleSubtitle,然后又可以将NSDictionary中的其他键添加到cell.detailTextLabel

答案 1 :(得分:0)

除了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];
   }