使用十进制字符串的`if`语句在应该为true时返回false

时间:2015-12-10 16:28:36

标签: ios swift

通过在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。我错过了什么?

1 个答案:

答案 0 :(得分:4)

建议...不是使用您构建的复杂布尔测试,Swift提供了一种简单的方法来检查String是否以特定字符序列开头:hasPrefix 。您可以像这样简化代码:

var hasLeadingOne = decimalString.hasPrefix("1")

如果你想使用你写的布尔测试,我相信这会起作用:

var hasLeadingOne = length > 0 && decimalString.characterAtIndex(0) == (49 as unichar)