我正在寻找一种以编程方式访问iOS词典的方法。我需要的是从自定义应用程序内检索特定语言的单词列表。
可能吗?是否有任何API提供此(或类似)功能?
我检查过Apple文档,但没有找到任何有用的东西......有人能指出我正确的方向吗?
答案 0 :(得分:34)
是用于显示内置字典UI的API(不是原始问题,而是在某些响应中提出),包括检查是否定义了给定的单词:
if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:@"word"]) {
UIReferenceLibraryViewController* ref =
[[UIReferenceLibraryViewController alloc] initWithTerm:@"word"];
[currentViewController presentViewController:ref animated:YES completion:nil];
}
答案 1 :(得分:12)
我认为没有公共API来访问嵌入式词典。最接近的是使用UITextChecker,但这可能无法满足您的需求
作为替代方案,您可以在所需的语言中找到并嵌入单词词典?这可能需要一些额外的工作
答案 2 :(得分:10)
没有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);
}
如果您需要任意单词列表,可以从多个在线资源中获取,这里是one。 / usr / share / dict / README的README说iOS单词列表使用ftp://ftp.ox.ac.uk/pub/wordlists
对于即时搜索,您需要在适合前缀搜索的结构上加载单词,例如trie。这是sample project,我就是这样做的。
如果您需要字典,请在线获取一个字典,然后在trie节点中包含指向单词条目的指针。如果加载花费太多时间,您可以尝试在后台加载,或压缩或序列化trie。
答案 3 :(得分:3)
没有API可以满足您的要求。
答案 4 :(得分:2)
很久以前我遇到过类似的问题并做了其他人的建议:在我的应用程序中嵌入了一个英文字典。从那时起,我将我的解决方案变成了一个静态库,可以在www.lexicontext.com处获得(注意它需要花费几美元)。考虑到下载它的开发人员数量,这似乎是一个常见问题......
答案 5 :(得分:1)
如果您可以使用私有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);
}
答案 6 :(得分:1)
已经有一个公共API,如@mrzzmr所述-这是SWIFT中的代码:
if UIReferenceLibraryViewController.dictionaryHasDefinition(forTerm: "word") {
var childVC = UIReferenceLibraryViewController(term: "word")
someParentVC.present(childVC, animated: true, completion: nil)
}
答案 7 :(得分:0)
即使没有API,如果用户长按所选单词,也可以自动使用。