2012-02-09 63 views
0
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.photoDatabase.managedObjectContext sectionNameKeyPath:@"status" cacheName:nil]; 

如果我將此緩存設置爲類似@"fetch_cache"的東西,那麼我的表是顛倒的。第1節在第0節上面!NSFetchedResultsController緩存使表顛倒

我是CoreData的新手。我應該知道什麼?

更新:我有一個排序描述符,它的工作原理。忘了把它放在這裏。

回答

0

核心數據中沒有隱式排序,因此您可能需要告訴控制器如何排序這些對象。

看看NSSortDescriptor並致電-setSortDescriptors:在您的NSFetchRequest

0

sectionNameKeyPath只指定分組,它不會爲您排序這些對象。您必須將NSSortDescriptor添加到您的request

+0

哦,對不起。我沒有發佈它,但我有一個爲請求定義的工作排序描述符。而且緩存爲零時請求正常工作。但是當我添加一個緩存文件時,它會突然顛倒過來。 – 2012-02-09 06:32:37

+1

從[Apple文檔](https://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html),請確保您的'NSSortDescriptor'數組中的第一項通過'@「狀態」'正確地對對象進行排序。同樣來自同一頁:'如果您正在使用緩存,則必須在更改任何獲取請求,謂詞或其排序描述符之前調用deleteCacheWithName:。除非將cacheName設置爲nil.',否則不得重複使用相同的提取結果控制器進行多個查詢 – 2012-02-09 06:45:54