加载特里首次应用打开
问题描述:
我是一个自定义的IOS键盘上工作。对于单词词典,我已经实现了自动更正的trie。 Trie也在目标c中编码。我有10万个单词表。我只想在应用程序第一次打开时加载trie,它应该永久保存。可能吗?加载特里首次应用打开
答
你怎么处理负荷的意思是只有一次,下载?
既然你下载数据(假设为从互联网上一个txt),您可以建立您的线索和序列化通过的NSKeyedArchiver并恢复它。
Trie *wordsTrie = [[Trie alloc]initWithUrl:@"https://www.internet.com/words.txt"]];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:wordsTrie];
/* persist the data ... */
Trie *restoredWordsTrie = [NSKeyedUnarchiver unarchiveObjectWithData:data];
更多关于归档的对象可以在这里找到:要从一个txt文件 https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Archiving.html
我有自定义的特里和我的设置/加载的线索。每当我的键盘弹出时,我将不得不加载2-3秒钟。所以键盘出现滞后。相反,只有在第一次弹出键盘时,才能加载trie。从下一次弹出键盘时,它应该读取已经加载的trie。就像userdefaults我们需要永久地存储trie树 –
很抱歉地说,但这是一个非常通用的问题陈述。这里有多个方面:加载整个特里到内存上开始可能会增加实际查找时间,但我会重新考虑,以实现代理模式,也许只是加载第3级,然后在需要时加载子树(选择一个随机算法书进一步实施)。 – Eike
另外:你如何实施你的Trie?每个节点都是一个对象吗? – Eike