Невозможно преобразовать значение типа 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)
Другие вопросы по тегам