Reputation: 1120
In my project I'd like to open iOS built-in Dictionary to find word meaning, or even better, get the meaning of the word directly in my app.
At the moment I found how to check a string is spelled correctly using UITextChecker
func wordIsReal(word: String) -> Bool {
let checker = UITextChecker()
let range = NSMakeRange(0, count(word))
let misspelledRange = checker.rangeOfMisspelledWordInString(word, range: range, startingAt: 0, wrap: false, language: "en")
return misspelledRange.location == NSNotFound
}
Upvotes: 9
Views: 6658
Reputation: 1120
I found the solution for Objective-C:
if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:@"word"]) {
UIReferenceLibraryViewController* ref =
[[UIReferenceLibraryViewController alloc] initWithTerm:@"word"];
[currentViewController presentViewController:ref animated:YES completion:nil];
}
and I've edited it for Swift 3:
let word = "home"
if UIReferenceLibraryViewController.dictionaryHasDefinitionForTerm(word) {
let ref: UIReferenceLibraryViewController = UIReferenceLibraryViewController(term: word)
self.presentViewController(ref, animated: true, completion: nil)
}
and the same for Swift 4:
let word = "home"
if UIReferenceLibraryViewController.dictionaryHasDefinition(forTerm: word) {
let ref: UIReferenceLibraryViewController = UIReferenceLibraryViewController(term: word)
self.present(ref, animated: true, completion: nil)
}
This solution allows to open the built-in dictionary if the word has a definition in the dictionaries saved in the device
Upvotes: 15
Reputation: 2999
Try with this
func wordIsReal(word: String) -> Bool {
let checker = UITextChecker()
let range = NSMakeRange(0, count(word))
let misspelledRange = checker.rangeOfMisspelledWordInString(word, range: range, startingAt: 0, wrap: false, language: "en_US")
NSLog("misspelledRange:\(misspelledRange)")
NSLog("word:\(word)")
var arrGuessed:NSArray? = checker.guessesForWordRange(misspelledRange, inString: word, language: "en_US")as NSArray!
NSLog("arrGuessed:\(arrGuessed)")
//var correctedStr = textAsNSString.stringByReplacingCharactersInRange(misspelledRange, withString: arrGuessed.objectAtIndex(0) as String)
return misspelledRange.location == NSNotFound
}
Upvotes: 1