创建自己的UILexicon条目

时间:2014-09-05 05:36:12

标签: ios keyboard uilexicon

我尝试将UILexicon子类化,以便在init部分创建自己的条目。但是,条目数组是只读的。如何在键盘扩展(iOS 8)中为自定义预测栏创建自己的单词源?

1 个答案:

答案 0 :(得分:0)

Apple似乎没有设计UILexicon和UILexiconEntry是可变的或创建可变副本。我在Swift中开发,并且它的实现不允许实例化新的UILexiconEntry对象,虽然我可以实例化一个新的UILexicon对象,但是我无法添加它。条目清单。

因此,Objective C接口的行为相似似乎是合理的,并且文档支持这种陈述" Apple打算让您将词典对象中的单词视为对您自己设计的自动更正/建议词典的补充。 "

幸运的是,为Lexicon Entries创建自己的存储非常简单,NSDictionary可以直接存储它们。首先使用userInput字符串作为每个条目的键,并使用item.userInput字符串作为对象,使用现有UILexicon列表中的条目加载它。这是Swift中的一个示例,对于客观的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会从Lexicons中过滤掉重复的条目,但这不应该是一个问题,因为每个userInput都应该只输出一个documentText。