无法将类型'Range '的值转换为期望的参数类型'UITextRange'
问题描述:
如何基于字符串创建范围。使用下面的代码,我得到错误“无法将类型'Range'的值转换为期望的参数类型'UITextRange'”。 FYI打印(firstString [范围])成功输出“xxx”。无法将类型'Range <String.Index>'的值转换为期望的参数类型'UITextRange'
class ViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
let firstString: String = "xxx"
let secondString: String = "yyy"
override func viewDidLoad() {
super.viewDidLoad()
textView.text = firstString
}
func replace() {
var finalString: String?
let range = firstString.startIndex..<firstString.endIndex
print(firstString[range])
textView.replace(range, withText: secondString)
}
@IBAction func replaceButton(_ sender: Any) {
replace()
}
}
答
在代码中有两个问题。首先,您需要将您的方法应用到textView文本属性中。第二个问题是你使用了错误的方法,用你需要使用replaceSubrange方法替换你的字符串的范围。所以你的代码应该是这样的:
textView.text.replaceSubrange(range, with: secondString)
尝试'textView.text.replace(range,withText:secondString)' –