1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SwiftUIでString型のスペルチェックを行う方法をざっくり説明

Last updated at Posted at 2020-05-12

SwiftUIで開発をしているときに、

String型の変数に格納された文字列のスペルをチェックしたい。」
こんな時ってよくありますよね(いや、ない)。

そんな時はUIKitのUITextCheckerを使ってスペルチェックしちゃいましょう。

(備忘録的に自己満足で書いてるのであしからず)

UITextCheckerとは?

UITextChecker はUIKitで用意されているNSObjectを継承したクラスです。
インスタンスを作成して使います。

#どんなコードを書いて使うの?
スペルチェックを行う関数を作りたい時は、

func spellCheck(word: String) -> Bool {
  let checker = UITextChecker()
  let range = NSRange(location: 0, length: word.utf16.count)
  let misspelledRange = checker.rangeOfMisspelledWord(
    in: word,
    range: range,
    startingAt: 0,
    wrap: false,
    language: "en") 

  return misspelledRange == NSNotFound
}

引数wordにスペルチェックしたいワードをString型で渡して、スペルが合っていたらtrueを返します。

#いろいろ説明
##NSRange
UITextCheckerを使うにはNSRangeという、まあ簡単に言うとスペルチェックをする範囲はどこですか?って質問に答えてあげる必要があります。その答えとしてNSRangeを引数として渡す必要があるわけです。

##word.utf16.count
NSRangeを取得するには文字列の長さを渡してあげる必要がありますが、文字列がどの文字コード(utfとかjisとか)を使っているのかで長さが変わるので、utf16に変換して統一してから文字列wordの長さを渡してあげる必要があるわけです。

##rangeOfMisspelledWord
実際にスペルチェックを行うのはこのメソッドです。
UITextCheckerのインスタンスメソッドであるこのメソッドを呼び出すことで、文字列の中の間違っている箇所を表したRangeを返します。もし文字列のスペルが合っていたらNSNotFoundが返されます。

#最後に
SwiftUI学習の備忘録として書いています。
もし間違い等ありましたらご指摘お願いいたします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?