Странное сравнение строк в iPhone iOS 6
Я использовал для сравнения текст, введенный в поле txt, как показано ниже,
if ([myTextfield.text isEqualToString: @""])
{
// success code
}
else
{
// my code
}
в iOS 7 эта проверка работает отлично. Если в текстовое поле ничего не введено, условие является успешным. Но в iOS 6, если поле пустое, это условие всегда ложно и перемещается в блок else.
Итак, мне понравилось,
if (myTextfield.text.length == 0)
{
// success code
}
else
{
// my code
}
Это отлично работает, и я просто хотел узнать, что не так в моем первом методе.
Ответы
Ответ 1
Если myTextfield.text
есть nil
, [myTextfield.text isEqualToString: @""]
будет терпеть неудачу, потому что сообщение nil возвращает nil (или 0, NO
по мере необходимости).
Во втором случае вы проверяете == 0
, поэтому даже если строка nil
, вы все равно получите положительный результат.
Ответ 2
В iOS7 нетронутые UITextFields возвращают nil, тогда как в предыдущих версиях iOS они возвращают пустую строку. Touched UITextFields в обоих случаях должен возвращать пустую строку.
(Вы задали вопрос, обращаясь к iOS6 w 7? Если нет, я также должен убедиться, что текстовое поле правильно подключено, так как косвенное текстовое поле iOS7 может возвращать пустую строку, в то время как несинтетическое текстовое поле iOS6 может возвращать NULL, поскольку iOS6 особенно строг таким образом.)