Я хочу сравнить значение NSString
строки со строкой «Неправильно». Вот мой код:
NSString *wrongTxt = [[NSString alloc] initWithFormat:@"Wrong"];
if( [statusString isEqualToString:wrongTxt] ){
doSomething;
}
Мне действительно нужно создавать NSString для "Wrong"?
Кроме того, могу ли я сравнить значение a UILabel
со text
строкой без присвоения значения метки строке?
objective-c
cocoa-touch
variables
Брайан
источник
источник
Ответы:
Нет, почему бы просто не сделать:
if([statusString isEqualToString:@"Wrong"]){ //doSomething; }
Использование
@""
просто создает строковый литерал, который является допустимымNSString
.Да, вы можете сделать что-то вроде:
UILabel *label = ...; if([someString isEqualToString:label.text]) { // Do stuff here }
источник
if ([statusString isEqualToString:@"Wrong"]) { // do something }
источник
Брайан, тоже стоит добавить сюда - остальные, конечно, правы, что вам не нужно объявлять строковую переменную. Однако в следующий раз, когда вы захотите объявить строку, вам не нужно делать следующее:
NSString *myString = [[NSString alloc] initWithFormat:@"SomeText"];
Хотя приведенное выше работает, он предоставляет сохраненную переменную NSString, которую вам нужно будет явно освободить после того, как вы закончите ее использовать.
В следующий раз, когда вам понадобится строковая переменная, вы можете использовать символ «@» гораздо более удобным способом:
NSString *myString = @"SomeText";
Он будет автоматически выпущен, когда вы закончите с ним, поэтому вы также избежите утечек памяти ...
Надеюсь, это поможет!
источник
new
или,copy
например,newObject
(изNSDictionaryController
) илиmutableCopy
(изNSObject
) developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/…Вы также можете использовать методы класса NSString, которые также создадут автоматически выпущенный экземпляр и будут иметь дополнительные параметры, такие как форматирование строки:
NSString *myString = [NSString stringWithString:@"abc"]; NSString *myString = [NSString stringWithFormat:@"abc %d efg", 42];
источник