这是关于if语句的奇怪问题。我的If语句可能不起作用。为什么?

时间:2012-02-09 17:12:21

标签: ios if-statement uitextfield

我有这个简单的if语句,检查UItextfields是否为空或不像这样:

 if([UserID.text isEqualToString:@""] || [UserPass.text isEqualToString:@""]){
        UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Error" 
                                                               message:@"Fields can not be empty." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alertsuccess show];
        [alertsuccess release];
    }

这是问题,第一次进入视图时有这些UItextfields。我像这样测试

  • UserID& UserPass为空---> If语句正常工作。
  • UserID不为空& UserPass为空--->不工作即使第二个条件成立,它也只是跳过我的if语句。
  • UserID为空& UserPass不为空--->如果语句正常工作。

现在有趣的部分在这里,如果我在测试期间不退出视图。我检查UserID不是空的& UserPass再次为空(上面的测试#2),然后of语句正常工作。 如果我在测试期间退出视图,那么if语句再次变得怪异。

任何人都可以帮我指出我在这里做错了什么吗? 非常感谢你

4 个答案:

答案 0 :(得分:1)

尝试使用:if([UserID.text length]> 0]){

答案 1 :(得分:1)

听起来像UserPass(或UserPass.text)没有设置为您认为的;它可以设置为nil,这会使isEqualToString总是返回false。如果你偶尔没有让它工作,我会说有一个断开连接的插座。

答案 2 :(得分:0)

有线。您是否检查过您的UserID和UserPass是否被定义为IBOutlet并在IB中连接?

答案 3 :(得分:0)

尝试NSLog(“bool值:%d”,[UserID.text isEqualToString:@“”] || [UserPass.text isEqualToString:@“”]);在评估IF语句以查看布尔值之前。