2012-04-30 31 views
0

我有一個基於SQL的核心數據託管文檔,並使用由NSFetchedResultsController支持的tableview呈現其內容。數據確實被顯示出來並且全部都在那裏,但即使我真的試圖對其進行排序,它也不會被排序。以下是我如何設置提取的結果控制器:NSFetchedResultsController不排序

- (void)setupFetchedResultsController // attaches an NSFetchRequest to this UITableViewController 
{ 

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Notebook"]; 
    NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    request.sortDescriptors = [NSArray arrayWithObject:descriptor]; 
    // no predicate because we want ALL the notebooks 

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                    managedObjectContext:self.dbContext 
                     sectionNameKeyPath:nil 
                       cacheName:nil]; 

} 

name是字符串類型的屬性。我也嘗試過NSDate類型的另一個屬性。它們都不起作用 - 即使在應用程序啓動之前立即顯示錶格視圖,也不會對數據進行排序。

想法?

+0

你什麼時候調用'-performFetch:'?那次調用之後,您是否嘗試過打印出結果,以確保問題不在控制器和表格視圖之間? – paulmelnikow

+0

performFetch是作爲setFetchedResultsController方法的一部分執行的,也就是self.fetchedRestultsController =的一部分= ...這就是蘋果的樣板代碼是如何做到的。至於印刷 - 我會盡力報道。 – user1258240

+0

你必須繼承嗎? – paulmelnikow

回答

0

好吧,我想這個進入堆棧溢出的X文件部分。問題解決了,我完全不知道我做了什麼來解決它。過去幾天我一直在研究我的應用的其他部分,並且在某些時候,獲取的結果控制器的結果開始被重新排序。也許這是Xcode中的一些錯誤,當我重新啓動時會解決,或者我在應用程序的另一部分中更改了一些內容,但我不知道。感謝您嘗試幫助我,雖然...

1

初始化你的*描述如下所示(請注意 「選擇」 的東西)

NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; 

希望幫助!

+0

剛剛嘗試過 - 沒有什麼變化... – user1258240

+0

順便說一句,我曾嘗試使用@selector(比較:)選擇器,字符串名稱,以及另一個日期屬性。沒什麼.. – user1258240

0

嘗試將performFetch移動到所引用方法的末尾。我正在使用的成功方法有設置和調用以一種方法執行提取,而不是分離。

相關問題