Установить NSString на основе условия - PullRequest
2 голосов
/ 14 июня 2011

Я борюсь с лучшим способом создать объект NSString с помощью alloc / init, а затем установить его содержимое на основе условия.

Я пытаюсь это:

        if (amount==@"current") { 
            NSString * suffix=[[NSString alloc] initWithFormat:@"contents1"];
        } else {
             NSString * suffix=[[NSString alloc] initWithFormat:@"contents2"];
        }

однако, если я пытаюсь использовать «суффикс» где-либо, компилятору это не понравится; утверждает, что он не объявлен.

Однако, так как я хочу простую неизменяемую строку, я не могу установить ее перед «если», а затем назначить ее во время «если», поэтому я не уверен, как к этому подойти?

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Ваш исходный код завершается ошибкой, потому что вы объявляете строковую переменную в ветвях 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";
3 голосов
/ 14 июня 2011

Попробуйте объявить NSString *suffix; перед выполнением оператора if / else:

NSString *suffix;
if ([amount isEqualToString:@"current"]) {
suffix = @"contents1";
} else {
suffix = @"contents2";
}

Это должно работать. (Кроме того, вы не можете использовать == для строк NSS).

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