代码之家  ›  专栏  ›  技术社区  ›  mclovin

无法转换“Range<String”类型的值。索引>'到预期的参数类型“uitextange”

  •  2
  • mclovin  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  0
  •   Leo Dabus    7 年前

    您的代码中有两个问题。首先,您需要在textView文本属性中应用您的方法。第二个问题是使用了错误的方法,要替换字符串的某个范围,需要使用replaceSubrange方法。因此,您的代码应该如下所示:

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