用字典数据填充UITableView

时间:2011-07-02 22:36:40

标签: iphone cocoa-touch uitableview nsmutabledictionary

我的情况:

我有一个NSDictionary对象。由NSNumber提供。值是自定义对象。

我想将字典值放入UITableView中。据我所知,UITableView要求对其源集合进行索引,以便在调用cellForRowAtIndexPath时,可以使用indexPath查找该值。

问题是当调用didSelectRowAtIndexPath时,我想从字典中查找对象,但是我没有密钥。我所拥有的只是indexPath.row。

我的解决方案: 我创建了一个键数组。我使用数组的索引来获取密钥,然后使用密钥将对象从字典中取出。

我的问题: 这似乎有点草率,特别是因为这是一个例行任务(填充UITableView,然后当有人触摸一个单元格时响应)。这是它的设计方式还是更好的方式?

2 个答案:

答案 0 :(得分:5)

问题是字典没有订单,而表视图则没有。 this question的答案应该为您提供一些处理此问题的替代方法。

答案 1 :(得分:3)

如另一个答案所述,NSDictionary的密钥未被订购,因此您无法保证按特定顺序获取行。也就是说,使用字典与UITableView一起使用非常容易。

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //  tableview cell setup

    NSArray* keys = [self.data allKeys];

    cell.textLabel.text = [self.data objectForKey:[keys objectAtIndex:indexPath.row]];

    return cell;
}

如果您需要根据您在NSDictionary中输入的方式订购列表,来自 Cocoa With Love 的Matt Gallagher提供了一个优雅的解决方案,其中{{1} }。你可以阅读它here