1. ホーム
  2. nsstring

[解決済み】NSRangeからRange<String.Index>へ。

2022-04-02 23:03:49

質問

を変換するにはどうすればよいですか? NSRange から Range<String.Index> をSwiftで使うのですか?

次のように使いたい。 UITextFieldDelegate メソッドを使用します。

    func textField(textField: UITextField!,
        shouldChangeCharactersInRange range: NSRange,
        replacementString string: String!) -> Bool {

textField.text.stringByReplacingCharactersInRange(???, withString: string)

<イグ

解決方法は?

その NSString のバージョン(Swift Stringとは対照的)。 replacingCharacters(in: NSRange, with: NSString)NSRange であるため、1つの簡単な解決策は 変換 String から NSString 第一 . Swift 3 と 2 ではデリゲートと置換メソッドの名前が若干異なるので、どちらの Swift を使っているかにもよりますが。

スウィフト3.0

func textField(_ textField: UITextField,
               shouldChangeCharactersIn range: NSRange,
               replacementString string: String) -> Bool {

  let nsString = textField.text as NSString?
  let newString = nsString?.replacingCharacters(in: range, with: string)
}

Swift 2.x

func textField(textField: UITextField,
               shouldChangeCharactersInRange range: NSRange,
               replacementString string: String) -> Bool {

    let nsString = textField.text as NSString?
    let newString = nsString?.stringByReplacingCharactersInRange(range, withString: string)
}