Нужно ли назначать строку переменной перед ее сопоставлением с другим?

Я хочу сравнить значение NSString со строкой "Неправильно". Вот мой код:

NSString *wrongTxt = [[NSString alloc] initWithFormat:@"Wrong"];
if( [statusString isEqualToString:wrongTxt] ){
     doSomething;
}

Мне действительно нужно создать NSString для "Неправильно"?

Кроме того, могу ли я сравнить значение a UILabel text со строкой, не присваивая значение метки строке?

Ответ 1

Мне действительно нужно создать NSString для "Неправильно"?

Нет, почему бы просто не сделать:

if([statusString isEqualToString:@"Wrong"]){
    //doSomething;
}

Использование @"" просто создает строковый литерал, который является допустимым NSString.

Кроме того, могу ли я сравнить значение UILabel.text со строкой, не присваивая значение метки строке?

Да, вы можете сделать что-то вроде:

UILabel *label = ...;
if([someString isEqualToString:label.text]) {
    // Do stuff here 
}

Ответ 2

if ([statusString isEqualToString:@"Wrong"]) {
    // do something
}

Ответ 3

Брайан, также стоит забросить здесь - другие, конечно, правильны, что вам не нужно объявлять строковую переменную. Однако в следующий раз, когда вы хотите объявить строку, вам не нужно делать следующее:

NSString *myString = [[NSString alloc] initWithFormat:@"SomeText"];

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

В следующий раз, когда вы хотите использовать строковую переменную, вы можете использовать символ "@" гораздо более удобным способом:

NSString *myString = @"SomeText";

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

Надеюсь, что это поможет!

Ответ 4

Вы также можете использовать методы класса NSString, которые также создадут экземпляр с автоопределением и имеют больше параметров, таких как форматирование строк:

NSString *myString = [NSString stringWithString:@"abc"];
NSString *myString = [NSString stringWithFormat:@"abc %d efg", 42];