Выбор строк для UITableViewCell - массив или оператор switch? - PullRequest
0 голосов
/ 25 октября 2009

При настройке источника данных UITableView мне было бы интересно получить представления о том, что лучше, решение A:

NSString *labelText;

switch (indexPath.row) {
    case 0:
        labelText = @"Setup New Match";
        break;
    case 1:
        labelText = @"Teams";
        break;
    case 2:
        labelText = @"Players";
        break;
    case 3:
        labelText = @"Archive";
        break;
}

cell.textLabel.text = labelText;

или раствор Б?

NSArray *labels = [NSArray arrayWithObjects:@"String 1", @"String 2", @"String 3", @"String 4", nil];

cell.textLabel.text = [labels objectAtIndex:indexPath.row];

Поклонник DRY во мне стремится к решению B, но затем я создаю массив в каждом цикле только для извлечения одного объекта. Есть ли какая-то конкретная причина для использования одного решения над другим или это просто личное предпочтение?

Ответы [ 3 ]

2 голосов
/ 25 октября 2009

Когда я делаю это, я использую оператор switch. Однако, если вы хотите использовать метод массива и не создавать массив каждый раз, вы можете использовать статический массив C или что-то в этом роде:

static NSString * const labels[] = {@"String 1", @"String 2", @"String 3", @"String 4"};

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //Get the cell in the normal way.  No array stuff here
    //...
    cell.textLabel.text = labels[indexPath.row];
}
1 голос
/ 25 октября 2009

Я предпочитаю решение А.

Если ваш массив не пре-выходный, я бы не использовал B. Тем не менее, я работаю над приложением с разделами и использую оператор switch, чтобы определить, какой раздел, затем я заполняю его данными из уже существующих массивы.

1 голос
/ 25 октября 2009

Если вы любите придерживаться решения B, вы можете сделать массив меток статичным, что должно исключить издержки на создание массива каждый раз.

С точки зрения того, какой из них лучше, хотя B, безусловно, самый элегантный в этом простом случае, он также наименее гибкий. Изобразите ситуацию, когда вы вносите изменения, чтобы поместить разные изображения также для каждой ячейки, опция А делает это изменение намного более чистым и обслуживаемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...