无法将类型为'NSRange'(又名'_NSRange')的值转换为预期的类型'Range'(又名'Range')

6 浏览
0 Comments

无法将类型为'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

}

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

0
0 Comments

问题原因:代码中出现了将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类型的range,但是编译器报错了,错误信息为:“Cannot convert value of type 'NSRange' (aka '_NSRange') to expected type 'Range' (aka '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类型的range,我们成功解决了这个问题。现在,代码可以正常编译和运行了。

在Swift 4中,将NSRange类型转换为Range类型时,可能会遇到编译器报错的问题。要解决这个问题,我们需要将NSRange类型转换为Range类型。

0
0 Comments

这个问题的出现是因为在代码中将一个NSRange类型的值转换为了Range类型的值,但是这两种类型是不兼容的,所以会报错。

解决这个问题的方法是将NSRange类型的值转换为Range类型的值。可以使用NSString的stringByReplacingCharactersInRange方法来实现转换。具体的代码如下所示:

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

在这段代码中,我们首先将text变量转换为NSString类型,然后使用stringByReplacingCharactersInRange方法来替换字符串中的指定范围的字符。最后,我们将替换后的字符串转换为NSString类型的值,并将其赋值给newString变量。

通过使用上述代码,我们可以将NSRange类型的值转换为Range类型的值,从而解决了报错的问题。

0