2010-12-17 36 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*));