Access iOS dictionary programmatically

There is an API for bringing up the built-in dictionary UI (not the original question but raised in some of the responses), including checking for whether a given word is defined:

if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:@"word"]) {
    UIReferenceLibraryViewController* ref = 
        [[UIReferenceLibraryViewController alloc] initWithTerm:@"word"];
    [currentViewController presentViewController:ref animated:YES completion:nil];
}

I don't think there is a public API to access the embedded Dictionary. The closest is using UITextChecker but that may not satisfy your needs

As an alternative, you could find and embed a Word Dictionary in the Language you want? It may require some extra work


There is no API, but if all you need is a list of words you can read it from /usr/share/dict/words:

    NSString *allTheWords = [NSString stringWithContentsOfFile: @"/usr/share/dict/words"
                                                      encoding: NSUTF8StringEncoding
                                                         error: nil];
    for (NSString *line in [allTheWords componentsSeparatedByString:@"\n"]) {
        NSLog(@"%@",line);
    }

If you need an arbitrary list of words you can get it from several online resources, here is one. The README at /usr/share/dict/README says iOS word list uses ftp://ftp.ox.ac.uk/pub/wordlists

For instant search you'll need to load the words on a structure suitable for prefix search, like a trie. Here is a sample project where I did just that.

If you need a dictionary, get one online, then include a pointer to the word entry in the trie node. If loading takes too much time you can experiment loading on the background, or compressing, or serializing the trie.


There is no API to do what you are asking.