gpt4 book ai didi

ios - 如何让textField验证代码更加紧凑和可读?

转载 作者:行者123 更新时间:2023-11-30 11:06:29 24 4
gpt4 key购买 nike

我正在编写文本字段验证代码。文本字段不允许用户输入 16..<80 以外的年龄。我写了下面的代码,我觉得它的质量很差。您关于使下面的代码更具可读性的建议将非常有帮助。

设置:

创建文本字段并委托(delegate)给 self。

extension UserProfileViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let numberFiltered = string.components(separatedBy: NSCharacterSet(charactersIn: "0123456789").inverted).joined(separator: "")

guard string == numberFiltered, range.location < 2 else {
return false
}

if range.location==0, string.intValue == 0 {
return false
}

guard let textFieldValue = textField.text?.intValue, let currentValue = string.intValue else {
return true
}

let totalValue = textFieldValue*10 + currentValue

switch totalValue {
case 16..<80:
return true
default:
textField.text = ""
return false
}
}
}

最佳答案

你所做的大部分事情都是不必要的。只需计算新字符串是什么,尝试转换为 Int,然后检查范围。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text!
let newText = oldText.replacingCharacters(in: Range(range, in: oldText)!, with: string)
if let num = Int(newText), num >= 16 && num < 70 {
return true
}

return false
}

仅供引用 - 这里使用 ! 都是安全的。 UITextField text 永远不会返回 nil,除非 iOS 中存在严重错误,否则该范围将有效。

关于ios - 如何让textField验证代码更加紧凑和可读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52657688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com