Невозможно преобразовать значение типа Range<String.Index>в ожидаемый тип аргумента UITextRange.
Как создать диапазон на основе строки. С кодом ниже я получаю сообщение об ошибке "Не удается преобразовать значение типа Range в ожидаемый тип аргумента UITextRange". FYI print(firstString[range]) успешно выдает "xxx".
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()
}
}
1 ответ
Решение
У вас есть две проблемы в вашем коде. Сначала вам нужно применить свой метод в свойстве textView textView. Вторая проблема заключается в том, что вы используете неправильный метод, чтобы заменить диапазон вашей строки, вам нужно использовать метод replaceSubrange. Итак, ваш код должен выглядеть примерно так:
textView.text.replaceSubrange(range, with: secondString)