Ваш исходный код завершается ошибкой, потому что вы объявляете строковую переменную в ветвях if/else
. Эта декларация является локальной для ее фигурных скобок и не существует вне их. Если вы переместите объявление за пределы оператора if
, вы можете использовать ветви if
для присвоения этой (общей) переменной:
BOOL isCurrent = [amount isEqualToString:@"current"];
if (isCurrent) {
suffix = @"contents1";
} else {
suffix = @"contents2";
}
Условное присваивание - хорошее место для использования троичного оператора ?:
. P? X : Y
похож на if (P) X; else Y;
. В отличие от if
, который является оператором, который полагается на присваивание и другие побочные эффекты, влияющие на его среду, ?:
является выражением, которое возвращает значение выбранной ветви. Вы можете использовать ?:
, чтобы сделать то, что вы хотите, так:
BOOL isCurrent = [amount isEqualToString:@"current"];
NSString *suffix = isCurrent? @"contents1" : @"contents2";