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就特别严格了。)