Почему этот кусок кода не работает? - PullRequest
1 голос
/ 04 октября 2010
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

 if ([indexPath section] == 0) {
  switch ([indexPath row]) {

   case 0:
    [self renameExercise];
    [[self tableView] deselectRowAtIndexPath:indexPath 
            animated:YES];
    break;

   case 1:
    EditRootNoteViewController *newController = [[EditRootNoteViewController alloc] initWithNibName:@"EditNoteView"
                           bundle:nil];
    [newController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [newController setDelegate:self];
    [self presentModalViewController:newController
          animated:YES];
    [newController release];
    break;

xCode 'ожидает выражения перед EditRootNoteViewController ... но почему это так?тот же самый фрагмент кода работает вне этого переключателя ... что, вероятно, является своего рода ключом, но я не имею ни малейшего из этого.

Ответы [ 3 ]

2 голосов
/ 04 октября 2010

Попробуйте поместить код в блок:

...
  switch ([indexPath row]) {

   case 0:
    [self renameExercise];
    [[self tableView] deselectRowAtIndexPath:indexPath 
            animated:YES];
    break;

   case 1: {
    EditRootNoteViewController *newController = [[EditRootNoteViewController alloc] initWithNibName:@"EditNoteView" bundle:nil];
    [newController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [newController setDelegate:self];
    [self presentModalViewController:newController animated:YES];
    [newController release];
    } break;
  }

Или, еще лучше, извлеките этот код в отдельный метод.

2 голосов
/ 04 октября 2010

Это потому, что вы не можете объявить переменную в качестве первого оператора регистра в операторе switch.

См. этот вопрос или этот вопрос для получения дополнительной информации.

1 голос
/ 04 октября 2010

Это все ваше заявление о переключении? Если это так, вы забываете

default:
break;

раздел.

Убедитесь, что ваш вопрос включает полный или хотя бы полный метод, чтобы нам было легче помочь.

EDIT: Ой! Посмотрев на это во второй раз, если вы объявляете новые переменные в операторе switch, вы должны сделать это в фигурных скобках. Не уверен, почему именно я столкнулся с этой проблемой несколько недель назад. Может быть, кто-нибудь может уточнить, зачем это нужно?

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