如果文本字段为空,则对iPhone执行此操作

如果文本字段为空,则对iPhone执行此操作,iphone,Iphone,我有一个简单的计算器可以工作,但我的问题是,如果用户没有在字段中输入任何数据,那么它仍然可以计算。我想我可以做到以下几点: if (txtUserName.text == nil || txtUserName2.text == nil || txtUserName3.text == nil || txtUserName4.text == nil || txtUserName5.text == nil) { //error message lblUserT

我有一个简单的计算器可以工作,但我的问题是,如果用户没有在字段中输入任何数据,那么它仍然可以计算。我想我可以做到以下几点:

if (txtUserName.text == nil || txtUserName2.text == nil || txtUserName3.text == nil || txtUserName4.text == nil || txtUserName5.text == nil)
    {
        //error message 
        lblUserTypedName.text =@"Error - No Field Input";
    }
    else
    {
    lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
    }

但它根本不起作用。任何帮助让我知道我在这里错过了什么将不胜感激。我想使用| |,所以即使他们输入了除一个字段以外的所有字段,这仍然会捕获它。

您需要执行类似于
[txtUserName.text isEqualToString:@”“]
的操作,因为空字符串与nil对象不同。在检查字符串是否为空之前,您可能还希望从字符串中去掉空白,这取决于您的应用程序所做的操作。我会在UITextField编辑委托方法中使用空格剥离,而不是在这个方法中

编辑:


您将需要执行类似于
[txtUserName.text isEqualToString:@”“]
的操作,因为空字符串与nil对象不同。在检查字符串是否为空之前,您可能还希望从字符串中去掉空白,这取决于您的应用程序所做的操作。我会在UITextField编辑委托方法中使用空格剥离,而不是在这个方法中

编辑:


我建议使用NSString的length方法来确定是否有任何输入。所以你可以用

if ([txtUserName.text length]== 0 || [txtUserName2.text length]== 0 || [txtUserName3.text length]== 0 || [txtUserName4.text length]== 0 || [txtUserName5.text length]== 0)
{
    //error message 
    lblUserTypedName.text =@"Error - No Field Input";
}
else
{
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}
这将适用于文本属性为nil(根据文档,这是默认值)和文本属性为空字符串


还要注意的是,它仍然执行计算,只是不显示它。如果要阻止计算,需要将用于计算
最终风险的代码移动到else块。

我建议使用NSString的长度方法来确定是否有任何输入。所以你可以用

if ([txtUserName.text length]== 0 || [txtUserName2.text length]== 0 || [txtUserName3.text length]== 0 || [txtUserName4.text length]== 0 || [txtUserName5.text length]== 0)
{
    //error message 
    lblUserTypedName.text =@"Error - No Field Input";
}
else
{
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}
这将适用于文本属性为nil(根据文档,这是默认值)和文本属性为空字符串


还要注意的是,它仍然执行计算,只是不显示它。如果要阻止计算,需要将用于计算
最终风险的代码移动到else块。

如果要检查多个字符串,可以执行此操作

if([txtUserName.text isEqualToString:@""] ||
 [txtUserName2.text isEqualToString:@""] ||
 [txtUserName3.text isEqualToString:@""] ||
 [txtUserName4.text isEqualToString:@""] ||
 [txtUserName5.text isEqualToString:@""] 
 )
{
 //error message 
  lblUserTypedName.text =@"Error - No Field Input";
}
else
{
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}

如果要检查多个字符串,可以这样做

if([txtUserName.text isEqualToString:@""] ||
 [txtUserName2.text isEqualToString:@""] ||
 [txtUserName3.text isEqualToString:@""] ||
 [txtUserName4.text isEqualToString:@""] ||
 [txtUserName5.text isEqualToString:@""] 
 )
{
 //error message 
  lblUserTypedName.text =@"Error - No Field Input";
}
else
{
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}

您希望它阻止计算,还是阻止显示计算?在这一点上,哪个更容易?您希望它阻止计算,还是阻止显示计算?在这一点上,哪个更容易?但我如何才能将其放入if/else?因为如果用户有我想要计算的输入数据,如果他们没有,我不想计算。只需将
txtUserName.text==nil
替换为
[txtUserName.text IsequalString:@”“]
。在我的答案中添加了完整的示例代码。bodnarbm的字符串长度技术也很有效。我以为我用的是相同的代码,但它给了我一个错误。我做错了什么?()HollerTrain,我想它停止了,因为你在行前设置了一个断点。。。要么删除断点(编辑器窗口左侧的蓝色选项卡),要么在断点关闭的情况下运行(command-option-r),但如何将其放入if/else?因为如果用户有我想要计算的输入数据,如果他们没有,我不想计算。只需将
txtUserName.text==nil
替换为
[txtUserName.text IsequalString:@”“]
。在我的答案中添加了完整的示例代码。bodnarbm的字符串长度技术也很有效。我以为我用的是相同的代码,但它给了我一个错误。我做错了什么?()HollerTrain,我想它停止了,因为你在行前设置了一个断点。。。删除断点(编辑器窗口左侧的蓝色选项卡)或在断点关闭的情况下运行(command-option-r)。当我尝试使用此代码时,它确实会启动模拟器,但会直接在上面使用的if语句处停止。思想?()当我尝试使用这段代码时,它确实会启动模拟器,但会直接在上面使用的if语句处停止。思想?()