2013-12-20 77 views
0

下午好,文本文件索引?

我想創建一個帶有許多不同段落的文本文件。我想每天都展示一個不同的人。有沒有辦法創建一種索引並每天顯示一個新段落?

我已經創建了應用程序,而且我更新的方式是進入我的服務器並編輯文本文件,然後將其下載到應用程序中,並且我必須每天更新它,而且我不想這樣做了。我有大約2年的日常段落,我可以將它們全部放在文本文件中。我不確定索引是否正確。

我希望能夠像一個巨大的文本段落列表,然後每天顯示不同的一個。有沒有辦法做到這一點?我願意接受不同的建議!我只是想讓它工作!也許有人可以引導我走正確的道路。

謝謝!

回答

1

首先,先從能夠工作最簡單的事:

  • 做一個文本文件,所有的段落。將整個文件下載到您的應用程序中。在您的應用程序中,將文件拆分爲段落,隨機選擇一個並顯示。

現在,如果上述證明太慢,那麼考慮優化它。您可以:

  • 下載文本文件(第一次)後,通讀該文件一次,並創建一個索引,其中包含每個段落開頭的偏移量。然後,隨機選擇一個索引條目,在文本文件中尋找該點,閱讀段落並顯示它。

或者,您可以:

  • 在服務器上創建索引並下載與文本文件一起。這使得應用程序不必創建索引本身。
+0

謝謝你的回答。現在,我不必下載文本文件。我可以簡單地創建文本文件並將其添加到應用程序,以便它可以脫機使用。現在,我怎樣才能從列表中調用下一段?有沒有像我需要在文本文件中的格式?謝謝! –

+1

我會:(a)將每個段落存儲爲一行(長)文本,或(b)在每段之間用空行格式化它。我可能會選擇(a),因爲無論如何您都必須爲設備屏幕設置格式。 –

+0

非常好。我會研究這個!我發現這個問題:[鏈接](http://stackoverflow.com/questions/5102512/how-to-read-a-random-line-from-a-textfile)_italic_有沒有辦法讀下一行和每次我把它稱爲函數時,下一行? –

1

有可能更容易/更好的方法來做到這一點,但這裏是我會做...

我重組你的文本文件轉換爲CSV具有兩列。左邊的列中應顯示日期段落(以易於解析的格式),右側的列中有實際的段落。當應用程序首次啓動時,它會進入網絡,下載並解析整個文件。

在您的應用中,將這些段落存儲在NSDictionary中,使用日期作爲關鍵字,並將段落作爲值。

現在將此NSDictionary編碼爲光盤。

從現在起,您不需要重新下載/重新分析文件。您可以檢查該字典,找到具有正確日期的條目,並顯示該條目。


現在,理想情況下,你會希望你的服務器能夠告訴你的應用程序時,該文件最後更新,併爲您的應用程序來跟蹤,當它最後下載的文件。只要服務器的上次更新日期比應用的上次下載日期更新,應用程序就應該重新下載,重新分析並重新保存文件。


如果您不希望存儲的日期,你可以簡單的把各段的線分開.txt文件。當你讀入文件時,你可以很簡單地通過這樣做來將每個段落存儲到單獨的數組索引中:

NSArray *paragraphs = [myTextDocContents componentsSeparatedByCharactersInSet: 
    [NSCharacterSet newLineCharacterSet]]; 
+0

謝謝nhgrif!我會嘗試你的方法,並會回覆你... –