iphone / target-c, как проверить, пусто ли текстовое поле - PullRequest
9 голосов
/ 25 января 2010

У меня есть типичное текстовое поле в приложении для iphone, и в ViewWillAppear я хотел бы немного поработать над текстом в текстовом поле.

Если txtField.text пуст, я бы хотел, чтобы для ввода текста было выбрано следующее текстовое поле, txtField2.

Я пытаюсь достичь этого через:

if (txtField.text != @"") [txtField2 becomeFirstResponder];

но после некоторого тестирования txtField.text (пока пустой) все равно не будет зарегистрирован как равный @ "" Чего мне не хватает?

Ответы [ 4 ]

19 голосов
/ 25 января 2010

Когда вы сравниваете две переменные-указатели, вы фактически сравниваете адреса в памяти, на которые указывают эти две переменные. Единственный случай, когда такое выражение верно, когда у вас есть две переменные, указывающие на один объект (и, следовательно, на тот же адрес в памяти).

Для сравнения объектов общим подходом является использование isEqual:, определенного в NSObject. Такие классы как NSNumber, NSString имеют дополнительные методы сравнения с именами isEqualToNumber:, isEqualToString: и так далее. Вот пример для вашей ситуации:

if ([txtField.text isEqualToString:@""]) [txtField2 becomeFirstResponder];

Если вы хотите что-то сделать, если NSString на самом деле не пустой, используйте символ !, чтобы изменить значение выражения. Вот пример:

if (![txtField.text isEqualToString:@""]) [txtField2 becomeFirstResponder];
9 голосов
/ 25 января 2010

Вы должны проверить либо:

if (txtField.text.length != 0)

или

if ([txtField.text isEqualToString:@""])

Пишем так: (txtField.text != @"") вы фактически сравниваете pointers со строкой, а не с их фактическими строковыми значениями.

3 голосов
/ 02 декабря 2011

Вы также должны проверить на ноль

if([textfield.text isEqualToString:@""] || textfield.text== nil )

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

Всего наилучшего

0 голосов
/ 09 сентября 2014

У нас уже есть встроенный метод, который возвращает логическое значение, которое указывает, есть ли у объектов ввода текста какой-либо текст или нет. Проверьте это простое решение со ссылкой

https://stackoverflow.com/a/25726765/3647325

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