Распознавание нескольких строковых значений в одном действии - PullRequest
2 голосов
/ 03 февраля 2010

Еще раз спасибо за помощь.

У меня есть простое действие, которое проверяет stringValue textField, и, если оно совпадает - сообщение о состоянии печатается во втором textField:

 if 

 (textField.stringValue == (@"Whatever" )){
 [outputDisplay setStringValue:@"Success"];

Мой вопрос заключается в том, как я могу реализовать несколько параметров ввода inputValue в этом методе?Например, «Независимо от», «Безотносительно1», «Безотносительно2» все возвращают «Успех» в выводе.

спасибо.

Пол

Ответы [ 2 ]

10 голосов
/ 03 февраля 2010

Создайте набор ответов, которые вы ищете, и проверьте, есть ли соответствующая строка.

NSSet *successStrings = [NSSet setWithObjects:@"Whatever1",
                                              @"Whatever2",
                                              @"Whatever3",
                                              nil];
if ([successStrings containsObject:st]) {
    [outputDisplay setStringValue:@"Success"];
}

(Массив также работал бы, но набор специализирован для тестирования членства, поэтому он лучше подходит для того, что мы здесь делаем.)

6 голосов
/ 03 февраля 2010

Во-первых, чтобы проверить равенство NSString -s, вы должны использовать -isEqualToString:. == сравнивает значения указателя, которые часто возвращают NO, даже если содержимое двух строк одинаковое.

Чтобы проверить, совпадает ли текстовое поле с несколькими строками, вы соединяете их с помощью оператора || (or), поэтому вы получаете

NSString* st = textField.stringValue;
if ([st isEqualToString:@"Whatever"] || [st isEqualToString:@"Whatever1"] || [st isEqualToString:@"Whatever2"]) {
  [outputDisplay setStringValue:@"Success"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...