Заполнение UITableView данными словаря - PullRequest
2 голосов
/ 03 июля 2011

Моя ситуация:

У меня есть объект NSDictionary.Под управлением NSNumber.Значения являются пользовательскими объектами.

Я хочу поместить значения словаря в UITableView.Насколько я могу судить, UITableView требует, чтобы его исходная коллекция была проиндексирована, поэтому при вызове cellForRowAtIndexPath вы можете использовать indexPath для поиска значения.

Проблема заключается в том, что при вызове didSelectRowAtIndexPath я хочу посмотретьдо объекта из словаря, но у меня нет ключа.Все, что у меня есть, это indexPath.row.

Мое решение: я создаю массив ключей.Я использую индекс массива, чтобы получить ключ, а затем использую ключ, чтобы вывести объект из словаря.

Моя проблема: Это кажется неаккуратным, тем более что это обычная задача (заполнениеUITableView, а затем отвечает, когда кто-то касается ячейки).Это так, как он предназначен для работы или есть лучший способ?

Ответы [ 2 ]

5 голосов
/ 03 июля 2011

Проблема в том, что в словарях нет порядка, а в табличном представлении.Ответы на этот вопрос должны дать вам несколько идей об альтернативных способах решения этой проблемы.

3 голосов
/ 03 июля 2011

Как уже упоминалось в другом ответе, ключи 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, Мэтт Галлахерот Какао с любовью предлагает элегантное решение с его OrderedDictionary.Вы можете прочитать об этом здесь .

...