У меня есть типичный textfield в приложении для iPhone, и в ViewWillAppear я хотел бы сделать немного логики, используя текст в текстовом поле.
Если бы txtField.text пуст, я хотел бы, чтобы следующий textfield, txtField2 был отобран для печати.
Я пытаюсь достигнуть этого через:
if (txtField.text != @"") [txtField2 becomeFirstResponder];
но после того, как некоторое тестирование, txtField.text (пока пустой), все еще не зарегистрирует как являющийся равным»», Что я пропускаю?
Когда вы сравниваете две переменные указателя, вы фактически сравниваете адреса в памяти, на которые эти две переменные указывают. Единственный случай, когда такое выражение верно, это когда две переменные указывают на один объект (и, следовательно, на один и тот же адрес в памяти).
Для сравнения объектов общим подходом является использование isEqual:
, определенного в NSObject
. Такие классы как NSNumber
, NSString
имеют дополнительные методы сравнения, названные isEqualToNumber:
, isEqualToString:
и так далее. Вот пример для вашей ситуации:
if ([txtField.text isEqualToString:@""]) [txtField2 becomeFirstResponder];
Если вы хотите что-то сделать, если NSString
на самом деле не пустой, используйте ! Символ
, чтобы перевернуть значение выражения. Вот пример:
if (![txtField.text isEqualToString:@""]) [txtField2 becomeFirstResponder];
Вы должны либо проверить:
if (txtField.text.length != 0)
или
if ([txtField.text isEqualToString:@""])
, написание своего пути: (TXTField.text! = @ "")
Вы на самом деле сравните указатели
для строки и не их фактические строковые значения.