2011-11-15 65 views
0

我在一個真正的損失..在過去的兩個星期裏,我一直在努力調整數據解析,顯示和保存在我的應用程序的方式。需要幫助使用核心數據來保存我的解析數據

我有兩個視圖控制器,第一個有四個表,當選擇加載一個uitableview充滿從xml文件解析的數據。每個XML文件是不同的,但具有相互關聯的關鍵字段。我需要加快我在uitableview中顯示這些數據的方式,因爲當我檢查我的ManufactureID對所有制造商都可用的每一個模型時,我會進行第二次搜索..這需要花費很多時間才能加載。

我想在視圖甚至即將加載之前在幕後執行此操作,並且我聽說實現此目的的最佳方法是使用核心數據..但我不確定如何使其工作用我現在做事情的方式。

如果您有任何可能對我有幫助的例子,建議或任何事情,我可以認真地使用某人的輸入,因爲我只是升遷而已。例如,如何將我的.xml文件中的數據導入coredata?如何創建關係型號ID?等等。

回答

1

首先,是否有任何理由將信息保存在XML文件中?如果你從開始就將它全部移到CoreData數據存儲區,而不是在啓動時將所有內容分析/預加載到內存存儲區(或其他),那麼一切都將變得更加簡單(並且更快!)。

至於如何建模您的關係,您可以隨時將您的CoreData模型設置爲與您的XML數據完全匹配。比方說,每個文件一個實體,文件中每個記錄一個屬性。您沒有理由讓使用CoreData Relationships來模擬XML中的關係。如果您的文件中已有ID,只需創建一個名爲xmlId的屬性或其他內容,然後根據該屬性進行提取,就像執行SQL查詢一樣。你會錯過很多CoreData的自動ORM-ness,但是如果你一直在處理XML,我懷疑你會注意到。

如果你真的想建立你的CoreData管理對象之間的關係,你必須以某種方式通過它們在XML中的ID匹配對象,或者通過將ID導入CoreData然後做數學,或者不知何故,當你解析時照顧這個。在不瞭解數據如何建模的情況下,很難給出任何具體建議。

有一些示例代碼可以完成一半的功能(它將XML讀入內存中的CoreData存儲區,但不對任何關係建模)。查看TopSongs(http://developer.apple.com/library/ios/#samplecode/Top歌曲)

+0

好吧,會有xml劑量發生變化的點(每年數次)。在xml中有一個字段,我可以檢查數據庫是否已更新。但是,我一直在想越來越多地對數據庫進行初始查詢,以便一次性獲得所有的xml。 –

+0

我對你的應用程序一無所知,所以一點也不知道;-)但是你將XML視爲數據,將CoreData視爲中介格式。我一直髮現把CoreData當成數據並使用XML作爲中介格式(用於從Web服務中提取,分發更改等)會更好。 – jemmons

+0

是的,我認爲這就是我開始擁有的實現。感謝您的回覆......我會繼續閱讀例子等,並給它一個裂縫。我認爲目前困擾我的事實是我已經開始走向xml的軌道,只有沒有核心數據......我必須回到一點代碼......但只是害怕做出改變。 –