Iphone UITextField:测试文本属性是否为空字符串或nil或null不';行不通
我在测试空(或空)文本属性时遇到了一个奇怪的问题。 这里是我的设置:我得到了一个包含6个文本字段的视图,这里是我用来遍历这些字段的代码(加载在一个NSMutable数组中) 当我在这个界面中,在前两个字段中键入一些文本,并在Remining字段的“just”选项卡中单击“Done”按钮,我从GDB输出中得到了以下信息:Iphone UITextField:测试文本属性是否为空字符串或nil或null不';行不通,iphone,objective-c,xcode,uitextfield,Iphone,Objective C,Xcode,Uitextfield,我在测试空(或空)文本属性时遇到了一个奇怪的问题。 这里是我的设置:我得到了一个包含6个文本字段的视图,这里是我用来遍历这些字段的代码(加载在一个NSMutable数组中) 当我在这个界面中,在前两个字段中键入一些文本,并在Remining字段的“just”选项卡中单击“Done”按钮,我从GDB输出中得到了以下信息: 2010-08-10 20:16:54.489 myApp[4883:207] value:Value 1 2010-08-10 20:16:58.115 myApp[4883
2010-08-10 20:16:54.489 myApp[4883:207] value:Value 1
2010-08-10 20:16:58.115 myApp[4883:207] value:Value 2
2010-08-10 20:17:02.002 myApp[4883:207] value:
2010-08-10 20:17:13.034 myApp[4883:207] value:
2010-08-10 20:17:15.854 myApp[4883:207] value:
2010-08-10 20:17:17.762 myApp[4883:207] value:
我知道如果我测试空字符串,它应该可以工作,因为转储到控制台时的text属性显示:
UITextField: 0x5d552a0; frame = (20 8; 260 30); text = ''; clipsToBounds = YES; opaque = NO; tag = 1; layer = CALayer: 0x5d54f20
但真正的问题是,当我返回视图时,在前两个字段中输入一些文本,然后单击“完成”按钮(不通过另一个字段,因此它们不会获得任何焦点)。这又是GDB输出
2010-08-10 20:23:27.902 myApp[4914:207] value:Value 1
2010-08-10 20:23:31.739 myApp[4914:207] value:Value 2
2010-08-10 20:23:34.523 myApp[4914:207] value:(null)
2010-08-10 20:23:56.443 myApp[4914:207]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'*-[NSMutableArray insertObject:atIndex::]:尝试在2'处插入nil对象
因此,显而易见的问题是,首先,isEqualtoString:nil
不起作用,其次,这个文本是如何在焦点放在字段上的情况下从“”变为null的
那么,有没有更好的方法来测试空字段
谢谢 怎么样
if (![tmpField.text isEqualToString:@""])
- 它测试的是空字符串,而不是nil字符串
if (![tmpField.text length])
如果它为nil或@“”,则将错过它。i、 e.它查找字符串的长度,如果长度为0(如果字符串为空或为零,则为0),则不执行if命令。仅当字段获得焦点时,此操作才有效,因为它获得了“”字符串。但是如果这个字段没有焦点,那么你会得到一个空值,这个测试会失败。这个工作,除了开始的否定。删除它并使其适用于“”或空字符串。谢谢但是,我仍然想知道,为什么将焦点放在文本字段的更改上,文本值从null变为“”?!?如果您使用的是UITextView,那么如果您使用的是UITextView,那么此链接将有所帮助
if (![tmpField.text length])