Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Swift实时文本字段检查来自多个数组的字符_Arrays_Swift_Swift2 - Fatal编程技术网

Arrays Swift实时文本字段检查来自多个数组的字符

Arrays Swift实时文本字段检查来自多个数组的字符,arrays,swift,swift2,Arrays,Swift,Swift2,我有一个文本字段作为密码输入。我已经创建了4个数组 upperCaseAll = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] lowerCaseAll = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "

我有一个文本字段作为密码输入。我已经创建了4个数组

upperCaseAll = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

lowerCaseAll = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

numberAll = [1 ,2, 3, 4, 5, 6, 7, 8, 9, 0]

specialCharAll = ["-", "/", ":", ";", "(", ")", "$", "&", "@", "\"", ".", ",", "?", "!", "'", "[", "]", "{", "}", "#", "%", "^", "\\", "|", "~", "<", ">", "€", "£", "¥", "•", ".", ","]
upperCaseAll=[“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”]
小写字母all=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”]
numberAll=[1,2,3,4,5,6,7,8,9,0]
特殊字符=[“-”、“/”、“:”、“;”、“(“,”)、“$”、“&”、“@”、“\”、“、”、“?”、“!”、“”、”、“[”、“]、“{”、“}”、“%、“^”、“\”、“\”、“\”、“~”、“、”、“、”、“、”、“、”、“、”、“•、“、”、“]
我正在尝试使用户类型至少为每种类型的字符中的一种。 我有4个文本视图,一旦满足每个规则,它们将从红色变为绿色。 然后,当满足所有规则时,红色文本视图变为绿色,并启用登录按钮

我的问题是如何实时检查文本字段以查看它是否满足规则?我想它必须在输入字符后检查每个数组

哦,数字应该是整数还是字符串


谢谢

您可以使用UITextFieldDelegate来完成此操作

每当用户操作导致文本出现时,文本字段就会调用此方法 若要更改,请使用此方法验证由 例如,您可以使用此方法防止用户 输入除数值以外的任何内容


但是您应该考虑使用正则表达式来检查密码字符串。这样会更方便。

您可以使用UITextFieldDelegate进行检查

每当用户操作导致文本出现时,文本字段就会调用此方法 若要更改,请使用此方法验证由 例如,您可以使用此方法防止用户 输入除数值以外的任何内容


但是您应该考虑使用正则表达式来检查密码字符串。这样会更方便。

如果您使用
Set
而不是
Array
,则会更容易。下面是一个示例:

private let upperCaseAll = Set("ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters)
private let lowerCaseAll = Set("abcdefghijklmnopqrstuvwxyz".characters)
private let numberAll = Set("0123456789".characters)
private let specialCharAll = Set("-/:;()$&@\".,?!'[]{}#%^\\|~<>€£¥".characters)

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    // Determines what the new value of the text field will be
    let newText = range.length == 0 ? textField.text! + string : (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)

    // Turn that string into a Set of Characters
    let characters = Set(newText.characters)

    let hasUpperCase = !characters.intersect(self.upperCaseAll).isEmpty
    let hasLowerCase = !characters.intersect(self.lowerCaseAll).isEmpty
    let hasNumber = !characters.intersect(self.numberAll).isEmpty
    let hasSpecialChar = !characters.intersect(self.specialCharAll).isEmpty

    // Now turn your 4 other views to green/red as needed
    print("hasUpperCase = \(hasUpperCase), hasLowercase = \(hasLowerCase), hasNumber = \(hasNumber), hasSpecialChar = \(hasSpecialChar)")
    ...

    return true
}
private let upperCaseAll=Set(“abcdefghijklmnopqrstuvxyz”.characters)
private let lowerCaseAll=Set(“abcdefghijklmnopqrstuvxyz”.characters)
私有let numberAll=Set(“0123456789”。字符)
private-let specialCharAll=Set(“-/:;()$&@\”,!“[]{}%^\\\\\\\\\~”“”。字符)
func textField(textField:UITextField,shouldChangeCharactersRange:NSRange,replacementString:string)->Bool{
//确定文本字段的新值
让newText=range.length==0?textField.text!+string:(textField.text!作为NSString)。stringByReplacingCharactersInRange(range,with string:string)
//将该字符串转换为一组字符
let characters=Set(newText.characters)
让hassuppercase=!characters.intersect(self.upperCaseAll).isEmpty
让hasLowerCase=!characters.intersect(self.lowerCaseAll).isEmpty
让hasNumber=!characters.intersect(self.numberAll).isEmpty
让haspecialchar=!characters.intersect(self.specialCharAll).isEmpty
//现在根据需要将其他4个视图转换为绿色/红色
打印(“hasUpperCase=\(hasUpperCase),hasLowercase=\(hasLowercase),hasNumber=\(hasNumber),hasSpecialChar=\(hasSpecialChar)”)
...
返回真值
}

如果使用
Set
而不是
Array
,则更容易。下面是一个例子:

private let upperCaseAll = Set("ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters)
private let lowerCaseAll = Set("abcdefghijklmnopqrstuvwxyz".characters)
private let numberAll = Set("0123456789".characters)
private let specialCharAll = Set("-/:;()$&@\".,?!'[]{}#%^\\|~<>€£¥".characters)

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    // Determines what the new value of the text field will be
    let newText = range.length == 0 ? textField.text! + string : (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)

    // Turn that string into a Set of Characters
    let characters = Set(newText.characters)

    let hasUpperCase = !characters.intersect(self.upperCaseAll).isEmpty
    let hasLowerCase = !characters.intersect(self.lowerCaseAll).isEmpty
    let hasNumber = !characters.intersect(self.numberAll).isEmpty
    let hasSpecialChar = !characters.intersect(self.specialCharAll).isEmpty

    // Now turn your 4 other views to green/red as needed
    print("hasUpperCase = \(hasUpperCase), hasLowercase = \(hasLowerCase), hasNumber = \(hasNumber), hasSpecialChar = \(hasSpecialChar)")
    ...

    return true
}
private let upperCaseAll=Set(“abcdefghijklmnopqrstuvxyz”.characters)
private let lowerCaseAll=Set(“abcdefghijklmnopqrstuvxyz”.characters)
私有let numberAll=Set(“0123456789”。字符)
private-let specialCharAll=Set(“-/:;()$&@\”,!“[]{}%^\\\\\\\\\~”“”。字符)
func textField(textField:UITextField,shouldChangeCharactersRange:NSRange,replacementString:string)->Bool{
//确定文本字段的新值
让newText=range.length==0?textField.text!+string:(textField.text!作为NSString)。stringByReplacingCharactersInRange(range,with string:string)
//将该字符串转换为一组字符
let characters=Set(newText.characters)
让hassuppercase=!characters.intersect(self.upperCaseAll).isEmpty
让hasLowerCase=!characters.intersect(self.lowerCaseAll).isEmpty
让hasNumber=!characters.intersect(self.numberAll).isEmpty
让haspecialchar=!characters.intersect(self.specialCharAll).isEmpty
//现在根据需要将其他4个视图转换为绿色/红色
打印(“hasUpperCase=\(hasUpperCase),hasLowercase=\(hasLowercase),hasNumber=\(hasNumber),hasSpecialChar=\(hasSpecialChar)”)
...
返回真值
}

谢谢,我一直在研究这个委托方法,你有没有一个很好的例子来说明这一点。我发现了一些有趣的结果,其中一个结果是将数组更改为集合(我并不反对这样做)谢谢,汉克斯,我一直在研究这个委托方法,你有没有一个很好的例子来说明这是怎么做到的。我发现了一些有趣的结果,其中一个结果是将数组改为集合(我并不反对这样做)非常感谢。一件事是如果我键入其中一个字符…然后将其删除。它不会撤消规则变为绿色。您必须在代码中更改它。它
有…==false
,您必须将相应的视图设置为白色/透明/redoh gotcha..再次感谢!非常感谢。一件事是如果我键入其中一个字符…然后删除它不会撤消规则变绿。您必须在代码中更改它。
有…==false
,您必须将相应的视图设置为白色/透明/重做得到..再次感谢!