【问题标题】:Cannot convert value of type 'NSRange' (aka '_NSRange') to expected type 'Range<Index>'(aka 'Range<String.CharacterView.Index>')无法将类型“NSRange”(又名“_NSRange”)的值转换为预期类型“Range<Index>”(又名“Range<String.CharacterView.Index>”)
【发布时间】:2015-09-24 19:49:57
【问题描述】:

检查字符串字符范围时出现此错误...

@objc func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let shouldChange = false
    let text = textField.text
    var newString = text!.stringByReplacingCharactersInRange(range, withString: string) as? NSString
    if newString.length > 14{
        newString = newString.substringToIndex(14)
    }
    textField.text = newString.uppercaseString

    return shouldChange
}

【问题讨论】:

标签: ios swift nsrange


【解决方案1】:

而不是text!(text! as NSString)

var newString = (text! as NSString).stringByReplacingCharactersInRange(range, withString: string) as? NSString

【讨论】:

    【解决方案2】:

    斯威夫特 4

    func textField(_ textField: UITextField,
                   shouldChangeCharactersIn range: NSRange,
                   replacementString string: String) -> Bool {
    
        if let oldString = textField.text {
            let newString = oldString.replacingCharacters(in: Range(range, in: oldString)!,
                                                          with: string)
            // ...
        }
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      相关资源
      最近更新 更多