2014-09-05 5 views
2

Я попытался подклассифицировать UILexicon, чтобы я мог создавать свои собственные записи в части init. Однако массив записей читается только. Как я могу создать свой собственный источник слов для моей настраиваемой панели прокрутки в расширении клавиатуры (iOS 8)?Создайте собственные записи UILexicon

ответ

0

Не похоже, что Apple разработала UILexicon и UILexiconEntry для изменения или создания изменяемых копий. Я разрабатываю в Swift, и его реализация не позволяет создавать новые объекты UILexiconEntry, и хотя я могу создать экземпляр нового объекта UILexicon, я не могу добавить его в список записей.

Так что кажется разумным, что интерфейсы Objective C ведут себя аналогичным образом, и документация подтверждает это, заявив, что «Apple намерена рассмотреть слова в объекте лексикона как дополнение к лексиконе автокоррекции/предложения вашего собственного дизайна».

К счастью, создание собственного хранилища для записей Lexicon очень просто, 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, но это не должно быть проблемой, потому что каждый UserInput должен выводить только один DocumentText.

Смежные вопросы