&& 运算符在 Swift3 中不起作用



>我正在使用Objective-C TextFieldValidator(https://github.com/dhawaldawar/TextFieldValidator)自定义类来验证我的应用程序中的文本字段,这些类具有验证正则表达式的函数:

-(BOOL)validate{
if(isMandatory){
if([self.text length]==0){
[self showErrorIconForMsg:strLengthValidationMsg];
return NO;
}
}
for (int i=0; i<[arrRegx count]; i++) {
NSDictionary *dic=[arrRegx objectAtIndex:i];
if([dic objectForKey:@"confirm"]){
TextFieldValidator *txtConfirm=[dic objectForKey:@"confirm"];
if(![txtConfirm.text isEqualToString:self.text]){
[self showErrorIconForMsg:[dic objectForKey:@"msg"]];
return NO;
}
}else if(![[dic objectForKey:@"regx"] isEqualToString:@""] && [self.text length]!=0 && ![self validateString:self.text withRegex:[dic objectForKey:@"regx"]]){
[self showErrorIconForMsg:[dic objectForKey:@"msg"]];
return NO;
}
}
self.rightView=nil;
return YES;
}

现在,在我的UIViewController中,我使用以下if语句来验证从注册表单中的此自定义TextFieldValidator继承的所有文本字段:

tfFirstName.isMandatory = true
tfLastName.isMandatory = true
if (tfFirstName.validate() && tfLastName.validate()){
return true
}else{
return false
}

tfLastName字段为空,但似乎if语句只调用tfFirstName.validate()并且总是返回true运算符在这里不起作用&&即运算符在这里不起作用。在 Objective-C 中工作正常,但在 Swift 3 中则不然。为什么&&操作员不在这里工作,解决方案是什么?

当文本为 nil 时,您的 validate() 函数返回 YES。 在 swift 中,UITextfield.text 可以生成一个 nil 值。 将验证函数的第一部分更改为类似...

if(isMandatory){
if(self.text == nil || [self.text length]==0){
[self showErrorIconForMsg:strLengthValidationMsg];
return NO;
}
}

我通过修改代码来解决我的问题,如下所示:

let isValidFirstName = tfFirstName.validate()
let isValidLastName = tfLastName.validate()
if (isValidFirstName && isValidLastName)){
return true
}else{
return false
}

请检查您的代码,&&是否按预期工作。

func validate(_ textfield:UITextField) -> Bool{
if textfield.text?.characters.count == 0{
return false
}else{
return true
}
}
func testValidate(){
let tfFirstName = UITextField()
tfFirstName.text = "fhgghh"
let tfLastName = UITextField()
tfLastName.text = ""
if (validate(tfFirstName) && validate(tfLastName)){
NSLog("true")
}else{
NSLog("false")
}
}
testValidate()

安慰:: 2017-09-18 11:54:08.796 MyPlayground2[22908:2591237]

相关内容

最新更新