2009-11-26 39 views
4

我在我的核心數據存儲中有大約5000-7000個對象,我想在表格視圖中顯示。我正在使用一個獲取的結果控制器,並且我沒有獲取任何謂詞。只是在整數字段排序。該對象由幾個整數和幾個字符串組成,大小爲10到50個字符。我的問題是加載視圖需要10秒鐘。這是正常的嗎?核心數據 - 大型數據集和非常長的加載時間

我相信,FRC處理大型數據集和處理的批次,並允許大型數據集。有什麼常見的陷阱或類似的東西,因爲我真的很難過。我已將應用程序剝離到單個表格視圖,但它仍需要大約10秒才能加載。我將表視圖作爲默認樣式離開,並在單元格中顯示一個字符串。

任何意見將不勝感激!

回答

3

在您的獲取請求中,您是否使用過-setFetchBatchSize:將一次獲取的項目數量減少到最少(通常是屏幕上的項目數量以及一些緩衝區)?沒有這一點,你不會看到使用NSFetchedResultsController作爲你的表視圖的性能好處。

您也可以在您的獲取請求上限制使用-setPropertiesToFetch獲取的屬性。將抓取限制爲只會影響其在表格視圖中顯示的對象的屬性可能是最好的。其餘部分可以在需要時稍後加載。

+0

就是這樣!我簡直不敢相信,雖然NSFetchedResultsController處理了所有這些!應該已經正確地閱讀了關於更詳細地查看NSFetchRequest的文檔和想法!是不是-setPropertiesToFetch:僅用於字典返回類型?在文檔和核心數據指南中根本沒有太多關於它的內容,它只是用它來設置在字典中提取什麼。如果這對於正常提取也有效,我會非常感興趣。如果這是真的,那很遺憾它沒有更好的記錄! – 2009-11-28 17:57:45

+0

-setPropertiesToFetch:Snow Leopard和iPhone OS 3.0中的核心數據是新增功能的,因此文檔可能沒有涉及到它。從WWDC提供的主題演示文稿中可以看出,這適用於正常的提取請求,並且只會將選定的屬性與您的託管對象一起加載到內存中。如果您使用訪問器來訪問未加載的屬性,那麼此時該屬性將從磁盤上的數據庫加載。 – 2009-11-28 22:44:26

+0

啊,非常感謝您的幫助,我會給他們一個嘗試:-)我可能看看那些WWDC視頻,看起來他們會很有趣! – 2009-11-29 09:00:18

4

您是否檢查了您在覈心數據模型中排序的整數的索引複選框?

+0

謝謝你,我從來沒有意識到你可以索引字段! – 2009-11-28 17:59:43