我正在尝试在Swift 2.0中实现俄语单词的自动完成功能,但遇到了以下问题。
我已经实现了以下代码来测试UITextChecker()的工作原理:
let textChecker = UITextChecker()
let getAvailableLanguages = UITextChecker.availableLanguages()
print(getAvailableLanguages)
let partial = "leo"
let completions = textChecker.completionsForPartialWordRange(NSRange(0..<partial.utf16.count), inString: partial,language: "en_US")
let completions2 = textChecker.guessesForWordRange(NSRange(0..<partial.utf16.count), inString: partial, language: "en_US")
print(completions)
print(completions2)
此代码打印以下结果,此结果对我来说看起来不错:
语言列表:
[ru_RU, en_CA, pt_BR, it_IT, ko_KR, nb_NO, de_DE, en_GB, sv_SE, en_AU, en_SG, es_MX, pt_PT, en_IN, fr_FR, es_ES, nl_NL, tr_TR, fi_FI, pl_PL, en_US, da_DK]
completionsForPartialWordRange:
Optional([leonine, leopard, leopardess,leopardesses, leopards, leotard, leotarded, leotards])
猜测词范围:
Optional([Leo, lei, lek, lea, led, lee, leg, let, leu, lev, lex, lao, loo, geo, cleo, oleo, lego, leto, leon])
之后,我为ru_RU实现了相同的代码
let textChecker = UITextChecker()
let partial = "кош"
let completions = textChecker.completionsForPartialWordRange(NSRange(0..<partial.utf16.count), inString: partial,language: "ru_RU")
let completions2 = textChecker.guessesForWordRange(NSRange(0..<partial.utf16.count), inString: partial, language: "ru_RU")
print(completions)
print(completions2)
但completionsForPartialWordRange
总是返回空数组ru_RU
:
Optional([])
的实际结果"кош"
应该是至少"кошка"
但是有一个空数组。
尽管这个guessesForWordRange 适用于ru_RU
:
Optional([каш, ко, кол, коб, код, кое, кож, коз, кои, кой, кок, ком, кон, коп, кор, кос, кот, коф, кою, куш, кэш, нош, шок, ковш, коуш, коша, коше, коши, кошм, кошт, кошу])
我尝试使用不同的俄语单词,但我总是从completionsForPartialWordRange
方法中得到空数组。我的代码有错误还是某些已知的 Apple 错误?如何完成ru_RU
withcompletionsForPartialWordRange
方法?