Странное сравнение строк в 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 } 

Это прекрасно работает, и я просто хотел знать, что не так в моем первом методе.

Если myTextfield.text равен nil , [myTextfield.text isEqualToString: @""] завершится с ошибкой, потому что сообщение nil возвращает nil (или 0, NO если необходимо).

Во втором случае у вас есть, вы проверяете == 0 , поэтому, даже если строка равна nil вы все равно получите положительный результат.

В iOS7 нетронутые UITextFields возвращают nil, тогда как в предыдущих версиях iOS они возвращают пустую строку. Touched UITextFields в обоих случаях должен возвращать пустую строку.

(Вы задали вопрос, обращаясь к iOS6 w 7? Если нет, я также должен убедиться, что текстовое поле правильно подключено, так как косвенное текстовое поле iOS7 может возвращать пустую строку, в то время как текстовое поле без подписи iOS6 может возвращать NULL, поскольку Таким образом, iOS6 особенно строг.)

Interesting Posts
Давайте будем гением компьютера.