【问题标题】:Create own UILexicon entries创建自己的 UILexicon 条目
【发布时间】:2014-11-25 11:28:56
【问题描述】:

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

【问题讨论】:

    标签: ios keyboard uilexicon


    【解决方案1】:

    Apple 似乎并未将 UILexicon 和 UILexiconEntry 设计为可变或创建可变副本。我正在用 Swift 开发,它的实现不允许实例化新的 UILexiconEntry 对象,虽然我可以实例化一个新的 UILexicon 对象,但我无法添加到它的条目列表中。

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

    p>

    幸运的是,为 Lexicon Entries 创建自己的存储非常简单,一个 NSDictionary 可以直接存储它们。首先从现有的 UILexicon 列表中加载条目,使用 userInput 字符串作为每个条目的键,并将 item.userInput 字符串作为对象。这是 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-05
      • 2014-09-27
      • 2017-04-02
      • 1970-01-01
      • 2013-08-04
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多