2010-12-17 43 views
1

我目前正在为iOS制作一个文字游戏,当加载时,读取大约30000字的文本文件并将它们加载到前缀树中以在游戏过程中快速搜索。这个效果很好,但是加载和树构建过程为应用程序的启动时间增加了明显的几秒钟。目前我正在iPhone 4上进行测试,但我认为在3GS早期型号上这样做会比较慢。在运行前在iPhone上创建并存储前缀树

有没有办法在编译时创建此树,而不是在应用程序打开时创建?或者,理想情况不太理想,是否可以用另一个程序预烘焙数据,并将该文件添加到项目中,而不是在运行时执行?我会怎么做呢?

回答

3

我遇到了与我们开发的游戏相同的问题,对于我们来说,使用带有单词而不是内存树的SQLite DB会更好。数据库使用的空间少于表示树的plist,它不需要我们将其预先加载到内存中,并且性能(查询有效的单词时)的性能大致相同。

+0

谢谢,这就像一个魅力工作! – jonmorgan 2010-12-20 15:23:50

0

pgb的回答很好。如果您不想使用SQLite,则可以将数据存储在plist中并让[NSDictionary dictionaryWithContentsOfFile:]为您创建一棵树。

如果您确实选择将数据编译到您的程序中,那么它必须由基本类型(如数字和字符)构建。然后,使用结构和数组来定义结构,并使用常量变量来存储数据。这里是一个简单的例子,它只是一串字符串:

const char *words[] = {"Word1","Word2","Word3"}; 
const unsigned numWords = (sizeof(words)/sizeof(char*));