Swift3 Swift 3中的密码存档验证不起作用

Swift3 Swift 3中的密码存档验证不起作用,swift3,Swift3,我在textfield中有多个基于文本更改的图像,我需要将图像更改为选中的图像,就像用户输入大写字母和小写字母以及基于该图像的特殊字符和数字被选中一样。但我无法根据此更改。 这是我的密码: @IBAction func textFieldEditingChanged(_ sender: Any) { if isValidated(passwordTextField.text!){ print("succ") } } func isValidated(_ pas

我在textfield中有多个基于文本更改的图像,我需要将图像更改为选中的图像,就像用户输入大写字母和小写字母以及基于该图像的特殊字符和数字被选中一样。但我无法根据此更改。 这是我的密码:

@IBAction func textFieldEditingChanged(_ sender: Any) {

    if isValidated(passwordTextField.text!){

       print("succ")
    }
}

func isValidated(_ password: String) -> Bool {
    var lowerCaseLetter: Bool = false
    var upperCaseLetter: Bool = false
    var digit: Bool = false
    var specialCharacter: Bool = false

    for char in password.unicodeScalars {
        if !lowerCaseLetter {
            lowerCaseLetter = CharacterSet.lowercaseLetters.contains(char)

        }
        if !upperCaseLetter {
            upperCaseLetter = CharacterSet.uppercaseLetters.contains(char)
        }
        if !digit {
            digit = CharacterSet.decimalDigits.contains(char)
        }

        if !specialCharacter {
            specialCharacter = CharacterSet.punctuationCharacters.contains(char)
        }
    }

    if  (specialCharacter) {
        //do what u want
        self.SpecialCharacter_img.image = UIImage(named: "GreenTick")
        return false
    }
    if  ( digit) {
        //do what u want
        self.onenumberImageCondiotion_img.image = UIImage(named: "GreenTick")
        return false
    }

    if  ( lowerCaseLetter && upperCaseLetter) {
        //do what u want
        self.UpperCaseImageConditions_img.image = UIImage(named: "GreenTick")
        return false
    }
    else {
        self.UpperCaseImageConditions_img.image = UIImage(named: "redtick")
        self.SpecialCharacter_img.image = UIImage(named: "redtick")
        self.onenumberImageCondiotion_img.image = UIImage(named: "redtick")
        return false
    }
}

isValidated方法中的代码只需稍作调整:

我对它做了一点修改,它在我的测试项目中起作用

func isValidated(_ password: String) -> Bool {
    var lowerCaseLetter: Bool = false
    var upperCaseLetter: Bool = false
    var digit: Bool = false
    var specialCharacter: Bool = false

    for char in password.unicodeScalars {
        if !lowerCaseLetter {
            lowerCaseLetter = CharacterSet.lowercaseLetters.contains(char)

        }
        if !upperCaseLetter {
            upperCaseLetter = CharacterSet.uppercaseLetters.contains(char)
        }
        if !digit {
            digit = CharacterSet.decimalDigits.contains(char)
        }

        if !specialCharacter {
            specialCharacter = CharacterSet.punctuationCharacters.contains(char)
        }
    }

    if  (lowerCaseLetter) {
        lowercaseLabel.text = "✅ Has a lowercase letter"
        lowercaseLabel.textColor = .green
        lowercaseLabel.sizeToFit()
    } else {
        lowercaseLabel.text = "Does not have a lowercase letter"
        lowercaseLabel.textColor = .red
        lowercaseLabel.sizeToFit()
    }

    if (upperCaseLetter) {
        uppercaseLabel.text = "✅ Has an uppercase letter"
        uppercaseLabel.textColor = .green
        uppercaseLabel.sizeToFit()
    } else {
        uppercaseLabel.text = "Does not have an uppercase letter"
        uppercaseLabel.textColor = .red
        uppercaseLabel.sizeToFit()
    }

    if  (specialCharacter) {
        specialLabel.text = "✅ Has a special character"
        specialLabel.textColor = .green
        specialLabel.sizeToFit()
    } else {
        specialLabel.text = "Does not have a special character"
        specialLabel.textColor = .red
        specialLabel.sizeToFit()
    }

    if  (digit) {
        numberLabel.text = "✅ Has a number"
        numberLabel.textColor = .green
        numberLabel.sizeToFit()
    } else {
        numberLabel.text = "Does not have a number"
        numberLabel.textColor = .red
        numberLabel.sizeToFit()
    }

    if lowerCaseLetter && upperCaseLetter && digit && specialCharacter {
        return true
    } else {
        return false
    }
最后一部分很重要,您必须检查所有条件是否为true,否则返回false。此外,我还删除了放置“//do what you want”的每个部分中的返回false代码,因为我认为函数不应该返回false,除非在最终检查时返回false

然后在检查每个子条件是否为真的特定“if语句”中,添加一个else语句,该语句将切换/设置图像的任一状态(例如,绿色勾选表示真,红色X表示假)

项目代码:

Swift 3?真正地我们是否输入了时间扭曲?您可能还需要检查CharacterSet.标点字符是否是您想要的。这不是一套完整的特殊字符集。这些字符例如:~$^+=不属于该集合。