iPhone的string比较奇怪的问题在iOS 6

我用来比较下面input的文本字段中的文本,

if ([myTextfield.text isEqualToString: @""]) { // success code } else { // my code } 

在iOS 7这个检查完美的作品。 如果没有input到文本字段,条件是成功。 但是在iOS 6中,如果这个字段是空白的,这个条件总是为false,并移到else块。

所以我喜欢,

 if (myTextfield.text.length == 0) { // success code } else { // my code } 

这工作正常,我只是想知道我的第一个方法有什么问题。

如果myTextfield.text nil[myTextfield.text isEqualToString: @""]将失败,因为消息传递nil返回nil(或0,否则视情况而定)。

在第二种情况下,你正在检查== 0 ,所以即使stringnil你仍然会得到一个积极的结果。

在iOS7中,未触及的UITextFields返回nil,而在之前的iOS版本中,它们返回一个空string。 在这两种情况下触摸的UITextFields应该返回一个空string。

(你有没有问这个问题,反过来错误iOS6瓦特7?如果不是,我也确保文本字段正确地连接,因为一个触摸的iOS7文本字段可以返回一个空string,而未合成的iOS6文本字段可以返回NULL这样iOS6就特别严格了。)