在我的应用程序中,我有一个对话框,用户可以在其中输入一些信息到UITextField中。在继续之前,我需要检查UITextField.text值是否等于某事(当用户单击提交按钮时捕获该值)。但是,我的条件(见下文)仍然失败。
if (userAssignedName || userAssignedName.length > 0 || ![userAssignedName isEqualToString:@""]) {
//do something
} else {
[alertManager showAlert:@"You must enter a name for this OR"];
}
当我在条件之前控制日志userAssignedName时,我得到了我所期望的,没有。
如何检查以确保字符串有价值?
答案 0 :(得分:4)
解决方案很简单。 3个值中的任何一个都返回YES / true值。
![userAssignedName isEqualToString:@""]
检查您的字符串是否等于空字符串。 (这可能是你默认的文本字段?)这很好。
userAssignedName.length > 0
检查字符串中的字符。这也没关系,除非你不需要它。它主要用于在文本字段中保留最大字符数。
userAssignedName
检查实际变量是否被实例化。并且不会也不应该以任何方式涉及用户输入。如果你删除它,你的支票不会失败。
解决方案:
if (/*userAssignedName.length > 0 ||*/ ![userAssignedName isEqualToString:@""])
{
//do something
}
else
{
[alertManager showAlert:@"You must enter a name for this OR"];
}
这应该可以解决问题。无论你是否使用评论都取决于你。
答案 1 :(得分:0)
替换它:
if (userAssignedName || userAssignedName.length > 0 || ![userAssignedName isEqualToString:@""]) {
使用:
if (userAssignedName.length > 0) {
您不想使用:
if (![userAssignedName isEqualToString:@""]) {
因为如果userAssignedName
是nil
,那么当您希望它失败时,此if
语句就会成功。