我在iphone应用程序中有一个典型的文本字段,而在ViewWillAppear中,我想使用文本字段中的文本做一些逻辑。
如果txtField.text为空,我希望选择下一个文本字段txtField2进行输入。
我试图通过以下方式实现这一目标:
if (txtField.text != @"") [txtField2 becomeFirstResponder];
但经过一些测试后,txtField.text(虽然为空)仍然不会注册为等于@“” 我错过了什么?
答案 0 :(得分:19)
比较两个指针变量时,实际上比较了这两个变量所指向的内存中的地址。这种表达式唯一的情况是,当你有两个指向一个对象的变量时(因此指向内存中的同一个地址)。
要比较对象,常见的方法是使用isEqual:
中定义的NSObject
。 NSNumber
,NSString
等类具有名为isEqualToNumber:
,isEqualToString:
的其他比较方法,依此类推。以下是您的情况示例:
if ([txtField.text isEqualToString:@""]) [txtField2 becomeFirstResponder];
如果您希望在NSString
实际上不为空的情况下执行某些操作,请使用!
符号来反转表达式的含义。这是一个例子:
if (![txtField.text isEqualToString:@""]) [txtField2 becomeFirstResponder];
答案 1 :(得分:9)
你必须检查:
if (txtField.text.length != 0)
或
if ([txtField.text isEqualToString:@""])
写你的方式:(txtField.text != @"")
你实际上将pointers
与字符串进行比较而不是它们的实际字符串值。
答案 2 :(得分:3)
您还必须检查nil
if([textfield.text isEqualToString:@""] || textfield.text== nil )
只有当用户点击文本字段时,您才能使用isEqualToString进行检查,否则文本字段将为零,因此您可以更好地检查这两种情况。
一切顺利
答案 3 :(得分:0)
我们已经有内置方法返回布尔值,指示文本输入对象是否有任何文本。 检查带链接的简单解决方案