2013-04-27 90 views
0

我有一個iOS應用我試圖建立一個從.XLSX(MS Excel文件)我有呈現的用戶數據。該文件有近11,000行,每行20列。我已經構建了一個解析器來將每行轉換爲NSObject的子類,每列都是一個實例變量。我做了符合NSCoding它,添加的每個實例的NSDictionary,與它的關鍵是原始文件的第一行,並存檔了。我的問題是,我不想將這樣一個巨大的NSDictionary解鎖,訪問最多20個或其中的對象,我可能需要在任何給定的時間。保存數據,在運行時使用

現在的問題是:如何以這種方式來保存這些數據塊,我沒有11,000個對象生活在堆中,並且仍然能夠將我需要的那些對象加載到應用程序中運行?

回答

2

我相信你最好的選擇是將數據導出到數據庫。

最簡單的解決方案是SQLiteCoreData

我會和CoreData一起去,因爲它會爲您節省大量的開發時間(但您需要花一些時間來熟悉CoreData)。此外,它可能會考慮有關僅保留在內存中使用的對象的內存問題。

基本上,CoreData是一個對象圖,這意味着它可以讓你加載僅在需要時(對於SQLite的存儲類型)的曲線圖的部分。

從你所描述的,你有一個單一的實體(含20列行),你想使用一些類型的查詢,而無需加載文件中的所有實體訪問。

的CoreData當量將是:
1)定義在覈心數據的實體(一次,在模型設計器)
2)創建CoreData堆(爲一個簡單的設計,這是自動生成的)
3 )創建一個NSPredicate選擇您喜歡
4實例)創建一個NSFetchRequest定義訪問數據
5)使用NSFetchedReaultsController 6執行主上下文的請求)顯示搜索結果

你可以創建一個使用核心數據的新項目,並看看它是如何工作的一個例子

+0

謝謝,我一直在通過Big Nerd Ranch指南去iOS編程,當時我停止了一半的路程在我自己身邊擺弄一下。我打開了書上看到CoreData是什麼頁面上,翻轉它,並發現我離開了我的書籤他們開始覆蓋CoreData很頁面上,我有一點閱讀的事,但我已經有一個項目學習準備好的概念去。 再次,謝謝。 – 2013-04-27 18:44:50