2010-01-13 81 views
1

我正在研究一個應用程序,它依賴於可以用各種方式排序的一組數據。我有核心數據設置。我有一個提取所有記錄的請求。我在導航控制器的左側有一個排序按鈕。它帶有我的排序選項的表格的模態視圖。當你改變選項時,它會關閉模態視圖。我可以使用[[NSUserDefaults standardUserDefaults] objectForKey:@「sortOption」]訪問選定的選項。cocoa iphone fetchedResultsController排序

現在我需要用某種新的排序描述符數組更新獲取請求並更改sectionNameKeyPath。

我試着將fetchedResultsController設置爲nil並在表視圖上調用reloadData。似乎沒有更新。

任何想法?

豪伊

回答

2

解決我的問題!

貌似所有我需要重新定義的讀取請求後做的,是執行讀取和重新加載表數據。

NSError *error = nil; 

if (![[self fetchedResultsController] performFetch:&error]) 
{ 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
} 
[self.tableView reloadData]; 
+0

那麼,我確實提到了調用performFetch並且你已經在做reloadData ... – Nimrod 2010-01-13 23:07:10

+0

你做到了。我只是一個白癡,在這方面很新穎。 - 感謝提示。 – Ward 2010-01-14 02:45:18

1

你應該能夠簡單地改變你與你的initiallized的NSFetchedResultsControllerNSFetchRequest對象的屬性,然後執行[resultsController performFetch:...]。例如,您可以更改NSFetchRequest中的謂詞和排序描述符數組,然後調用performFetch

如果您需要如何使用NSFetchedResultsController的示例,請參閱Apple的CoreDataBooks示例代碼。

更新

嗯,不幸的是,如果你想更改的部分關鍵那麼我認爲你必須創建一個新的部分密鑰生成新的NSFetchedResultsController對象。 NSFetchedResultsController的所有屬性似乎是隻讀:(

+0

好像我可以更新所取得的成果,但TA不更新。我試過使用[self.myTable reloadData],但是這只是刪除所有行並顯示沒有結果。 所有我想要做的,我可以改變飛行中的排序。這怎麼會這麼難? – Ward 2010-01-13 20:29:07

0

我會確保刪除fetchedResultsController緩存如果已啓用緩存。

[NSFetchedResultsController deleteCacheWithName:@"MyCacheName"];