通过在swift中覆盖以下方法检查文本字段时:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
当我在文本字段中输入1时,下面的行返回false
var hasLeadingOne = length > 0 && decimalString.characterAtIndex(0) == (1 as unichar)
hasLeadingOne
返回 false 但是当我在文本字段中输入1时,它应该是 true 。此外,decimalString.characterAtIndex(0)的值似乎是49而不是1,即使是作为unichar。我错过了什么?
答案 0 :(得分:4)
建议...不是使用您构建的复杂布尔测试,Swift提供了一种简单的方法来检查String
是否以特定字符序列开头:hasPrefix
。您可以像这样简化代码:
var hasLeadingOne = decimalString.hasPrefix("1")
如果你想使用你写的布尔测试,我相信这会起作用:
var hasLeadingOne = length > 0 && decimalString.characterAtIndex(0) == (49 as unichar)