IOS / Objective-C: доступ к переменным внутри операторов switch - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть оператор switch, который в большинстве случаев возвращает статические значения, но в некоторых случаях я хотел бы вызвать функцию для получения значения.Соответственно, я поместил фигурные скобки внутри корпуса, который, очевидно, определяет область видимости для переменных.

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

Когда я это сделаю:

case 2018:
         {
             NSString * myText = [self getMyText];
             NSArray *myTextArr = [myText componentsSeparatedByString:@"**"];
             responseOptions = myTextArr;
         }
myOutsideArr = myTextArr;  ///This throws an undeclared identifier error
             break;

responseOptions не распознается за скобками.

Есть ли способ получить доступ к значению из области видимостиопределяется скобками?

Заранее благодарим за любые предложения.

1 Ответ

0 голосов
/ 27 сентября 2018

Нет способов получить доступ к данным внутри корпуса извне.

Но по этой причине коммутатор с break подразумевает, что у вас есть только одно совпадение значений регистра, вы можете сохранить данные регистра во внешней переменной, не опасаясь перезаписи.Таким образом, вы можете сделать это так:

NSArray *myOutsideArr = [NSArray array];
int year = 2018;
switch (year) {
    case 2018: {
        NSString * myText = [self getMyText];
        NSArray *myTextArr = [myText componentsSeparatedByString:@"**"];
        myOutsideArr = myTextArr;
        break;
    }
    case 2017: {
        // ...
    }
}
...