Странная ошибка синтаксического анализа переключателя - PullRequest
0 голосов
/ 22 апреля 2011
switch (indexPath.section) {  
  case 0: //products used  
    NSString * chemical = [selectedChemicals objectAtIndex:indexPath.row];  
    cell.textLabel.text = chemical;  
    break;  
  case 1: //areas sprayed  
    return [selectedAreas count];  
    break;  
  case 2://target pests  
    return [selectedPests count];  
    break;  
  case 3://notes  
    return 1;  
    break;  
}

дает мне: «/Users/grady/programming/ObjectivelyBetter/bioguard/Classes/JobWizardViewController.m:147: ошибка:« химический »необъявленный (первое использование в этой функции)»

исправляет пустая точка с запятой в начале регистра.

switch (indexPath.section) {  
  case 0: //products used  
    ;  
    NSString * chemical = [selectedChemicals objectAtIndex:indexPath.row];  
    cell.textLabel.text = chemical;  
    break;  
  case 1: //areas sprayed  
    return [selectedAreas count];  
    break;  
  case 2://target pests  
    return [selectedPests count];  
    break;  
  case 3://notes  
    return 1;  
    break;  
} 

1 Ответ

2 голосов
/ 22 апреля 2011

Когда вы объявляете переменные в операторе case, рекомендуется (и необходимо избегать ошибок такого рода) заключать операторы в фигурные скобки, например,

case 0:
    {
        int i = 0;
        ....
        break;
    }

Не знаю, почемуТочка с запятой "решит" проблему.Это немного странно ... фигурные скобки - то, что вам нужно.

В вашем конкретном случае вы также можете просто исключить объявление локальной переменной и установить ячейку textLabel следующим образом:

  cell.textLabel.text = [selectedChemicals objectAtIndex:indexPath.row];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...