无法将“Range <string.index>”类型的值转换为预期的参数类型“UITextRange”

时间:2017-09-25 12:56:14

标签: swift string uitextview

如何根据字符串创建范围。使用下面的代码,我收到错误“无法将类型'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 个答案:

答案 0 :(得分:0)

您的代码中存在两个问题。首先,您需要在textView文本属性中应用您的方法。第二个问题是你使用了错误的方法,要替换你需要使用replaceSubrange方法的字符串范围。所以你的代码应该是这样的:

textView.text.replaceSubrange(range, with: secondString)