Swift:'string'类型的值没有成员'length'

B.S*_*mar 7 string ios swift

我在我的应用程序中实现了一些TextField功能所以我使用了TextField Delegates,但它显示了一些错误,如"字符串类型的值没有成员长度"我不知道如何解决这个问题,请帮助我解决这个问题.

在这里,我给出了我正在尝试的代码.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    var oldLength: Int = textField.text!.characters.count
    var replacementLength: Int = string.characters.count
    var rangeLength: Int = range.length
    var newLength: Int = oldLength - rangeLength + replacementLength
    if textField.tag == 1 {
        if string.length > 0 && !NSScanner.scannerWithString(string).scanInt(nil) {  **------>//Error was showed in this line.**
            return false
        }
        // This 'tabs' to next field when entering digits
        if newLength == 5 {
            if textField == txtOtp4 {
                textField.resignFirstResponder()
            }
        }
        else if oldLength > 0 && newLength == 0 {

        }

        return newLength <= 4
    }
    else {
        if newLength == 11 {
            if textField == txtPhoneNumber {
                textField.resignFirstResponder()
            }
            return newLength <= 10
        }
    }
    return true
    // This allows numeric text only, but also backspace for deletes
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*len 20

更换

if string.length > 0
Run Code Online (Sandbox Code Playgroud)

通过

if string.characters.count > 0
Run Code Online (Sandbox Code Playgroud)

编辑Swift 4:

String现在符合Collection协议,所以它有一个count属性.


moh*_*ish 8

如果您使用的是Swift 2.0,则应该使用

string.characters.count
Run Code Online (Sandbox Code Playgroud)

获取String中的字符数.