Чтение текстового поля и сравнение с объектом массива? - PullRequest
0 голосов
/ 07 сентября 2010

Я установил массив, полный слов в качестве объектов.Затем я пытаюсь сравнить, что пользователь вводит в поле uitext, с объектом в массиве, чтобы увидеть, совпадают ли они.

Я получил указатель на uitextview в одном из методов делегата, однако не могу сравнить содержимое текстового поля с объектом в массиве.Я предполагаю, что это потому, что один является строкой, а другой является объектом массива?Нужно ли как-нибудь привести одну из переменных?

Спасибо

Мартин

1 Ответ

0 голосов
/ 07 сентября 2010

Предполагая, что вы хотите проверить, соответствует ли пользовательский ввод любому члену вашего массива, вы должны сделать что-то вроде этого:

NSString *input = textField.text;
BOOL wordFound = NO;
for(NSString *candidate in self.possibleWordsArray) { 
    if( [input isEqual:candidate] ) {
        wordFound = YES;
        break;
    }
}
if(wordFound) {
    ...
}
else {
    ...
}

Примечания:

  • Мы сравниваем входную строку с каждым членом массива по очереди.Это придает явное значение идее сопоставления строки с массивом.

  • Когда мы находим совпадающую строку, мы устанавливаем флаг wordFound на YES и затем прекращаем поиск(используя оператор break).Если совпадений не найдено, флаг wordFound остается в своем первоначальном значении NO.

  • Всегда используйте isEqual для проверки равенства между строками, никогда ==;позже будет обычно работать, но потом иногда ломаться.Это связано с тем, что == только проверяет, указывают ли два указателя на одну и ту же ячейку памяти, в то время как у вас может быть две копии идентичной строки в разных ячейках памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...