检查 switch 语句中文本字段的整数值是否有效 [swift]
Check if the integer value of a text field is valid in a switch statement [swift]
我一直在尝试检查文本字段的整数值在 switch 语句中是否有效,以涵盖更多可能的情况,而不是使用长 if/elseif 语句。
switch characterTextFields {
case Int(characterTextFields[1].text!) == nil:
validationErrorModal(text: "Level must be a number!")
}
以上代码提示如下错误:
Expression pattern of type 'Bool' cannot match values of type '[UITextField]?'
characterTextFields 是一个文本字段数组。我研究了可能涉及使用 let 和 where 关键字的解决方案,但未能正确实施。有什么建议吗?
使用guard let
会更简单:
guard let level = Int(characterTextFields[1].text!) else {
validationErrorModal(text: "Level must be a number!")
return
}
// Do something with your level
您可以通过以下方式实现它:
switch Int(characterTextFields[1].text!) {
case nil:
validationErrorModal(text: "Level must be a number!")
default:
validationErrorModal(text: "Level is a number!")
}
你可以使用 switch
,但你必须切换那个数字,而不是输入字段:
switch Int(characterTextFields[1].text!) {
case nil:
validationErrorModal(text: "Level must be a number!")
case 0?: // switch over optional value
break
}
通常先处理可选的更简单,例如:
guard let level = Int(characterTextFields[1].text!) else {
validationErrorModal(text: "Level must be a number!")
return
}
然后切换非可选值:
switch level {
case 0:
break
default:
break
}
最好在他们输入时进行验证。您应该实施 UITextFieldDelegate。然后在你的委托中实现它:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//Check for illegal characters
return (string.rangeOfCharacter(from: CharacterSet(charactersIn: "0123456789").inverted) == nil)
}
这首先防止了任何非法进入的发生。
我一直在尝试检查文本字段的整数值在 switch 语句中是否有效,以涵盖更多可能的情况,而不是使用长 if/elseif 语句。
switch characterTextFields {
case Int(characterTextFields[1].text!) == nil:
validationErrorModal(text: "Level must be a number!")
}
以上代码提示如下错误:
Expression pattern of type 'Bool' cannot match values of type '[UITextField]?'
characterTextFields 是一个文本字段数组。我研究了可能涉及使用 let 和 where 关键字的解决方案,但未能正确实施。有什么建议吗?
使用guard let
会更简单:
guard let level = Int(characterTextFields[1].text!) else {
validationErrorModal(text: "Level must be a number!")
return
}
// Do something with your level
您可以通过以下方式实现它:
switch Int(characterTextFields[1].text!) {
case nil:
validationErrorModal(text: "Level must be a number!")
default:
validationErrorModal(text: "Level is a number!")
}
你可以使用 switch
,但你必须切换那个数字,而不是输入字段:
switch Int(characterTextFields[1].text!) {
case nil:
validationErrorModal(text: "Level must be a number!")
case 0?: // switch over optional value
break
}
通常先处理可选的更简单,例如:
guard let level = Int(characterTextFields[1].text!) else {
validationErrorModal(text: "Level must be a number!")
return
}
然后切换非可选值:
switch level {
case 0:
break
default:
break
}
最好在他们输入时进行验证。您应该实施 UITextFieldDelegate。然后在你的委托中实现它:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//Check for illegal characters
return (string.rangeOfCharacter(from: CharacterSet(charactersIn: "0123456789").inverted) == nil)
}
这首先防止了任何非法进入的发生。