2012-02-06 82 views
0

我有一個段控制與5項,選擇每個項目數據過濾器的一些標準和顯示不同的結果。段控制中的所有五個選項使用相同的實體來獲取數據。核心數據獲取請求優化與段控制

目前我有一個fetchresultcontroller,並且每當在段控件中有值更改時,我都會從具有不同謂詞的相同實體中獲取數據,並用新數據重新載入表。

我期待優化這一點。我是以正確的方式做還是以正確的方式做到這一點?

此外,更改已獲取數據的升序和降序之間的排序順序的最佳方法是什麼?

謝謝你。

回答

2

你能發表一些代碼片段嗎?

如果你已經獲取了一組MangedObjcts的你可以用一個排序Descirptor重新排序的NSArray:sortedArrayUsingDescriptors

- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors 
0

如果你只取少量NSManagedObjects的,有可能是沒有太大的優化做完了。 CoreData及其相應的類(例如,您正在使用的FetchResultsController,它被設計爲與UITableViews一起工作得很好)爲您執行了大部分重要工作。

就升序和降序之間改變排序順序的最佳方式而言;這是在像這樣確定的:

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"someEntityProperty" ascending:YES/NO]; 

如果設置上升到YES,你會得到你NSManagedObjects回到您提供的鍵進行排序從小到大遞增)。如果您將其設置爲NO,則會將其從最大到最小(降序)。