Нужно ли назначать строку переменной перед ее сопоставлением с другим?
Я хочу сравнить значение 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];