Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITextField:测试文本属性是否为空字符串或nil或null不';行不通_Iphone_Objective C_Xcode_Uitextfield - Fatal编程技术网

Iphone UITextField:测试文本属性是否为空字符串或nil或null不';行不通

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

我在测试空(或空)文本属性时遇到了一个奇怪的问题。 这里是我的设置:我得到了一个包含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: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字符串
还有许多其他方法,包括测试字符串的长度。注意:您可以向nil对象发送消息,而不会出现任何问题,因此如果tmpField.text为nil,则测试将成功(并且在尝试将nil对象添加到数组时会崩溃)-但您需要的测试是向NSString对象发送消息,查询其是否为空。

我倾向于使用

if (![tmpField.text length])

如果它为nil或@“”,则将错过它。i、 e.它查找字符串的长度,如果长度为0(如果字符串为空或为零,则为0),则不执行if命令。

仅当字段获得焦点时,此操作才有效,因为它获得了“”字符串。但是如果这个字段没有焦点,那么你会得到一个空值,这个测试会失败。这个工作,除了开始的否定。删除它并使其适用于“”或空字符串。谢谢但是,我仍然想知道,为什么将焦点放在文本字段的更改上,文本值从null变为“”?!?如果您使用的是UITextView,那么如果您使用的是UITextView,那么此链接将有所帮助
if (![tmpField.text length])