Странное сравнение строк в 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 особенно строг таким образом.)