Как заполнить UITableViewCell TextLabels со значением NSDictionary? - PullRequest
0 голосов
/ 22 сентября 2011

Я на последней стадии настройки моего 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:'

любая помощь будет принята с благодарностью

ОБНОВЛЕНИЕ :::

Я нашел отличный пример того, как заполнить текстовую метку ячейки uitableview строкой NSString, созданной так

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

arraysByLetter - мой отсортированный NSDictionary, однако это приводит к тому, что программа получила сигнал "EXC_BAD_ACCESS" , не знаю почему, но пытается работатьчерез это.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Вы, похоже, путаете NSMutableDictionary с NSMutableArray. Первый получает доступ к объектам на key с, обычно NSString с, а второй на NSUIntegers.

Например, если dict является NSMutableDictionary, то вы можете позвонить

[dict objectForKey:@"myKey"];

Если array является NSMutableDictionary, то вы можете позвонить

[array objectAtIndex:0];

В приведенном вами примере у вас есть NSDictionary, где objectForKey: - это NSArray. Поэтому вы должны называть что-то вроде

[[dict objectForKey:@"H"] objectAtIndex:0];

для вывода "Honda" или

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

для вывода "Mitsubishi".

0 голосов
/ 22 сентября 2011

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

Вы используете индекс, где нужен ключ.

...