-2

I get an error while using UITextChecker in Swift 4. The following code most likely works for Swift 3, I'm just not sure what's the problem in Swift 4? Here is my code:

import UIKit
var correctStr : String = String()
let str = "Helo"
let textChecker = UITextChecker()
let misspelledRange = textChecker.rangeOfMisspelledWordInString(
            str, range: NSRange(0..<str.utf16.count),
            startingAt: 0, wrap: false, language: "en_US")

        if misspelledRange.location != NSNotFound,
            let guesses = textChecker.guessesForWordRange(
                misspelledRange, inString: str, language: "en_US") as? [String]
        {
            correctStr = guesses.first

        }

and I receive this error: "use of unresolved identifier 'UITextChecker'.

Your help would be greatly appreciated.

rmaddy
  • 314,917
  • 42
  • 532
  • 579
Mohammad
  • 1,078
  • 2
  • 18
  • 39

1 Answers1

2

The APIs rangeOfMisspelledWordInString and guessesForWordRange have been renamed, your code should read:

import UIKit
var correctStr : String = String()
let str = "Helo"
let textChecker = UITextChecker()

let misspelledRange = textChecker.rangeOfMisspelledWord(in: str, range: NSRange(0..<str.utf16.count), startingAt: 0, wrap: false, language: "en_US")
if misspelledRange.location != NSNotFound,
  let guesses = textChecker.guesses(forWordRange: misspelledRange, in: str, language: "en_US") {
  correctStr = guesses.first!
}
dzl
  • 908
  • 11
  • 32
  • I'm still receiving the same error. I'm getting an error on line 4 of my code above, it seems that it's not able to create a new instance of UITextChecker! – Mohammad Oct 20 '17 at 22:22
  • 1
    Running the above code verbatim works in XCode 9.0.1 for me -- can you check the same? – dzl Oct 20 '17 at 22:26