2014-09-05 27 views
2

我試圖繼承UILexicon,所以我可以在init部分創建自己的條目。但是,條目數組是隻讀的。如何在鍵盤擴展(iOS 8)中爲我的自定義預測欄創建自己的單詞來源?創建自己的UILexicon條目

回答

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篩選出的詞彙的,但是這不應該是一個問題,因爲每個userInput應該輸出只有一個documentText。