无法将类型为'NSRange'(又名'_NSRange')的值转换为预期的类型'Range'(又名'Range')
无法将类型为'NSRange'(又名'_NSRange')的值转换为预期的类型'Range'(又名'Range')
在检查字符串字符范围时遇到此错误...
@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
}
当检查字符串字符范围时出现错误...
问题原因:代码中出现了将NSRange类型转换为Range
解决方法:将代码中的NSRange类型转换为Range
文章内容如下:
在Swift 4中,当我们在处理UITextField的输入时,可能会遇到一个问题:将NSRange类型转换为Range
下面是一段相关的代码示例:
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)
// ...
}
// ...
}
在这段代码中,我们尝试将NSRange类型的range转换为Range
解决这个问题的方法是将代码中的NSRange类型转换为Range
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
if let oldString = textField.text {
if let range = Range(range, in: oldString) {
let newString = oldString.replacingCharacters(in: range, with: string)
// ...
}
}
// ...
}
通过将NSRange类型的range转换为Range
在Swift 4中,将NSRange类型转换为Range
这个问题的出现是因为在代码中将一个NSRange类型的值转换为了Range
解决这个问题的方法是将NSRange类型的值转换为Range
var newString = (text! as NSString).stringByReplacingCharactersInRange(range, withString: string) as? NSString
在这段代码中,我们首先将text变量转换为NSString类型,然后使用stringByReplacingCharactersInRange方法来替换字符串中的指定范围的字符。最后,我们将替换后的字符串转换为NSString类型的值,并将其赋值给newString变量。
通过使用上述代码,我们可以将NSRange类型的值转换为Range