iOS сравнить заголовок кнопки со строкой

Я только учусь кодировать, поэтому спасибо за ваше терпение в этом простом вопросе.

Вот мой код:

- (IBAction)buttonWasPressed:(id)sender {  
    NSString *buttonName = [sender titleForState:UIControlStateNormal];  
    if (buttonName == @"Button 1") {  
        do something 
    }

Как сравнить заголовок кнопки, переданной в качестве отправителя, со строкой?

Большое спасибо за помощь.


person Trevor McKendrick    schedule 11.03.2011    source источник


Ответы (4)


в target-c вы не можете сравнивать строки, используя "==", вместо этого вы должны использовать метод isEqualToString из класса NSString для сравнения строки с другой.

if ([buttonName isEqualToString: @"Button 1"]) {
  // do something
}
person csch    schedule 11.03.2011
comment
я также предлагаю вам потратить несколько минут и взглянуть на NSString и его методы, там много всего, что вам когда-нибудь понадобится: developer.apple.com/library/mac/#documentation/Cocoa/Reference/ - person csch; 11.03.2011
comment
Спасибо за помощь! Я обязательно посмотрю этот документ. - person Trevor McKendrick; 13.03.2011

Используйте метод -isEqualToString:

if ([buttonName isEqualToString:@"Button 1"])
   ...

используя ==, вы сравниваете понтеры, а не фактические строковые значения, которые они содержат

person Vladimir    schedule 11.03.2011

Лучший способ сравнить строку:

NSString *string1 = <your string>;
NSString *string2 = <your string>;

if ([string1 caseInsensitiveCompare:string2] == NSOrderedSame) {
    //strings are same
} else {
    //strings are not same
}
person loganathan    schedule 08.02.2013

Я обнаружил, что с Xcode 8.3.1 необходимо сделать:

if([self.myButton isEqual: @"My text"]) {
//do this
}
person Carter S.    schedule 19.04.2017