2012-03-20 53 views
0

我有一個關於使用coredata最有效的方式或多或少的一般性問題。一般核心數據性能

我已經嘗試了兩種不同的方法來管理在我的項目視圖中顯示的數據。

方法1:當視圖被加載時,我執行所有的coredata提取並將結果存儲在一個數組中,視圖然後從數組中檢索顯示的對象。 (即:objectAtIndex:...)

方法2:視圖控制器本身讓我的數據處理類在外出時執行提取,只要需要特定的coredata對象,它就會被提取。

在我當前的項目中,這會調用大約200-500個對象,這些對象需要根據其屬性進行排序並顯示在tableview中。

獲取方法是相同的我首先加載所有的對象或當我批量加載它們(正確的屬性)。

不同之處主要在於cellForRow方法,其中我必須決定是否要從數組中挑選對象或直接從coredata中挑選對象。

這兩種方法都可以正常工作,我現在看不到任何性能差異,但是我擔心隨着項目的擴展&更多的數據可能會更慢一些。

您認爲最好的方法是做什麼?

回答

2

對於較大的數據集,使用NSFetchedResultsController控制器的峯值內存佔用空間可能存在優勢,據推測,該控制器最適合根據表大小從持久存儲區中提取適量的數據。

隨着NSFetchedResultsController你有過,你可以根據管理對象是牽強的大小和數量調整爲性能的獲取批量大小,控制等

+0

嗨 - 感謝提示=)香港專業教育學院做了一些研究在fetchtedresults控制器上的最後一個小時,這看起來像一個很好的解決方案=) 它會導致我的數據顯示在分組tableview中的任何問題?目前我用一組數組來表示數據,用於相關數據部分。 – 2012-03-20 21:30:09

+0

'NSFetchedResultsController'非常適合通過設置其'sectionNameKeyPath'屬性來顯示分組數據。 – FluffulousChimp 2012-03-21 03:18:26

+0

再次感謝;-) lokke進入它會做得很好。 – 2012-03-21 07:02:30