如何用NSDictionary值填充UITableViewCell TextLabels?

时间:2011-09-21 22:55:04

标签: iphone ios uitableview nsdictionary

我正在设置我的Indexed Uitableview以进行快速滚动的最后阶段,一旦我完成了这个,我将写下我的经验,希望能帮助那些试图获得与我自己相同结果的人。 但是我有最后一步将我的NSDictionary值传递到我的tableviewcells文本标签中。我只是不知道该怎么做,希望有人可以给我一个例子。

这就是我的字典看起来像

Dictionary: {
    H =     (
        Honda,
        Honda,
        Honda,
        Honda,
        Honda,
        Honda,
        Honda
    );
    M =     (
        Mazda,
        Mazda,
        Mitsubishi,
        Mitsubishi,
        Mitsubishi,
        Mitsubishi,
        Mitsubishi,
        Mitsubishi
    );
    N =     (
        Nissan,
        Nissan,
        Nissan,
        Nissan,
        Nissan,
        Nissan,
        Nissan
    );
    T =     (
        Toyota,
        Toyota,
        Toyota
    );

我已经尝试了一些随机的东西,但是对于将NSDictionary传递给uitableview几乎一无所知...这是我在tableView中尝试过的东西:cellForRowAtIndexPath:

//..
[[cell textLabel] setText:[[arraysByLetter objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]];

    return cell;
//..

arraysByLetter是我的NSDictionary

并且代码行给了我这个警告  'NSMutableDictionary'可能无法响应'objectAtIndex:'

任何帮助将不胜感激

UPDATE :::

我找到了一个很好的例子,说明如何使用像这样创建的NSString填充uitableview单元格文本标签

NSString *value = [arraysByLetter objectForKey:[[arraysByLetter allKeys] objectAtIndex:indexPath.row]];
    cell.textLabel.text = value;

arraysByLetter是我的排序NSDictionary,但这导致程序收到信号“EXC_BAD_ACCESS”不确定原因,但试图解决它。

2 个答案:

答案 0 :(得分:1)

您似乎将NSMutableDictionaryNSMutableArray混淆。前者通过key访问对象,通常为NSString s,后者按NSUIntegers访问。

例如,如果dictNSMutableDictionary,那么您可以调用

[dict objectForKey:@"myKey"];

如果arrayNSMutableDictionary,那么您可以致电

[array objectAtIndex:0];

对于您提供的示例,您有一个NSDictionary,其中objectForKey:NSArray。因此,您应该调用类似

的内容
[[dict objectForKey:@"H"] objectAtIndex:0];

输出"Honda"

[[dict objectForKey:@"M"] objectAtIndex:2];

输出"Mitsubishi"

答案 1 :(得分:0)

您正在字典上使用数组方法调用。在字典中,您可以使用与该对象(成员)关联的键来获取其成员。在数组中,通过使用索引到数组中来获取数组的成员。

您正在使用需要密钥的索引。