我尝试将UILexicon子类化,这样我就可以在初始化部分创建我自己的条目。但是,条目数组是只读的。如何在键盘扩展(iOS 8)中为自定义预测栏创建自己的词源?
发布于 2014-11-25 11:28:57
看起来苹果并没有将UILexicon和UILexiconEntry设计成可变的或者创建可变的副本。我正在使用Swift进行开发,它的实现不允许实例化新的UILexiconEntry对象,虽然我可以实例化一个新的UILexicon对象,但我不能将其添加到它的条目列表中。
因此,Objective C接口的行为类似似乎是合理的,文档支持这一点,并声明"Apple打算让您将词典对象中的单词作为您自己设计的自动更正/建议词典的补充。“
幸运的是,为词典条目创建自己的存储非常简单,NSDictionary可以直接存储它们。首先,使用existing UILexicon列表中的条目加载它,使用userInput字符串作为每个条目的关键字,使用item.userInput字符串作为对象。这是一个Swift的例子,对于objective C开发人员来说应该是可读的。
var myLexicon = NSMutableDictionary()
self.requestSupplementaryLexiconWithCompletion { (theLexicon: UILexicon!) -> Void in
let lexiconEntries = theLexicon.entries
// Completion handler
for item in lexiconEntries {
myLexicon.setObject(item.documentText, forKey: item.userInput)
}
}请注意,使用NSDictionary可以从词典中过滤出重复的条目,但这应该不是问题,因为每个userInput应该只输出到一个documentText。
https://stackoverflow.com/questions/25679220
复制相似问题