Программный доступ к словарю iOS - PullRequest
28 голосов
/ 14 сентября 2011

Я ищу способ доступа к словарю iOS программным способом.Что мне нужно, так это получить список слов определенного языка из пользовательского приложения.
Возможно ли это?Существуют ли API, которые предоставляют эту (или аналогичную) функциональность?
Я проверил документацию Apple, но не нашел ничего полезного ... Может кто-нибудь указать мне правильное направление?

Ответы [ 7 ]

34 голосов
/ 24 июля 2013

Там - это API для вызова встроенного пользовательского интерфейса словаря (не первоначальный вопрос, а поднятый в некоторых ответах), включая проверку того, определено ли данное слово:

if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:@"word"]) {
    UIReferenceLibraryViewController* ref = 
        [[UIReferenceLibraryViewController alloc] initWithTerm:@"word"];
    [currentViewController presentViewController:ref animated:YES completion:nil];
}
12 голосов
/ 14 сентября 2011

Я не думаю, что есть публичный API для доступа к встроенному словарю. Самый близкий использует UITextChecker , но это может не удовлетворить ваши потребности

В качестве альтернативы, вы можете найти и вставить словарь на желаемом языке? Это может потребовать дополнительной работы

10 голосов
/ 25 марта 2013

API не существует, но если все, что вам нужно, это список слов, который вы можете прочитать из /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);
    }

Если вам нужен произвольный список слов, вы можете получить его из несколькихИнтернет-ресурсы, здесь это один .README в / usr / share / dict / README говорит, что список слов iOS использует ftp: //ftp.ox.ac.uk/pub/wordlists

Для мгновенного поиска вам понадобитсязагрузить слова в структуру, подходящую для поиска префиксов, например, три.Вот пример проекта , где я так и сделал.

Если вам нужен словарь, найдите его в Интернете, затем включите указатель на запись слова в узле trie.Если загрузка занимает слишком много времени, вы можете поэкспериментировать с загрузкой в ​​фоновом режиме, сжатием или сериализацией файла.

3 голосов
/ 14 сентября 2011

Нет API, чтобы делать то, что вы просите.

2 голосов
/ 07 марта 2012

Я столкнулся с подобной проблемой давным-давно и сделал то, что предлагали другие: встроил в мое приложение словарь английского языка.С тех пор я превратил свое решение в статическую библиотеку, которая доступна по адресу www.lexicontext.com (обратите внимание, что это стоит несколько долларов).Учитывая количество разработчиков, которые загрузили его, это, кажется, общая проблема ...

1 голос
/ 06 июня 2016

Если вы можете использовать частный API, вы можете использовать следующий код для определения слова:

_UIDictionaryManager *manager = [%c(_UIDictionaryManager) assetManager];
id definitions = [manager _definitionValuesForTerm:[self queryString]];
for(_UIDefinitionValue *item in definitions) {
        myModel = self;
        NSMutableAttributedString *def = [item definition];
        NSString *str = [def string];
        HBLogDebug(@"%@ = %@", [item localizedDictionaryName], str);
}
0 голосов
/ 11 ноября 2011

Даже если нет API, его можно использовать автоматически, если пользователь долго нажимает на выбранное слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...