Сравнение строк в операторах IF: нераспознанный селектор отправлен на экземпляр - PullRequest
0 голосов
/ 16 января 2010

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

if ([[[mine metal] stringValue] isEqualToString:@"Gold"])
{
 //some function
}

однако есть некоторые осложнения, когда я делаю это. Во-первых, это дает мне предупреждение: NSString может не отвечать на -stringValue. и когда я запускаю приложение, оно выходит из оператора if: консоль сообщает «- [NSCFString stringValue]: нераспознанный селектор отправлен в экземпляр». mine.metal определяется через быстрый цикл перечисления в массиве; металлический атрибут определен как NSString, и NSLog может отображать эту строку. что еще мне не хватает?

1 Ответ

3 голосов
/ 16 января 2010

Предупреждение компилятора и последующая ошибка времени выполнения сообщают вам, в чем проблема.

[mine metal] возвращает строку NSString. NSString не имеет метода с именем stringValue.

Если [мой металл] действительно возвращает строку NSString, то вы можете сделать это:

if ([[mine metal] isEqualToString:@"Gold"])
{
  //some function
}
...