2017-04-18 47 views
-2

我是一个自定义的IOS键盘上工作。对于单词词典,我已经实现了自动更正的trie。 Trie也在目标c中编码。我有10万个单词表。我只想在应用程序第一次打开时加载trie,它应该永久保存。可能吗?加载特里首次应用打开

回答

0

你怎么处理负荷的意思是只有一次,下载?

既然你下载数据(假设为从互联网上一个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

+0

我有自定义的特里和我的设置/加载的线索。每当我的键盘弹出时,我将不得不加载2-3秒钟。所以键盘出现滞后。相反,只有在第一次弹出键盘时,才能加载trie。从下一次弹出键盘时,它应该读取已经加载的trie。就像userdefaults我们需要永久地存储trie树 –

+0

很抱歉地说,但这是一个非常通用的问题陈述。这里有多个方面:加载整个特里到内存上开始可能会增加实际查找时间,但我会重新考虑,以实现代理模式,也许只是加载第3级,然后在需要时加载子树(选择一个随机算法书进一步实施)。 – Eike

+0

另外:你如何实施你的Trie?每个节点都是一个对象吗? – Eike

相关问题