2013-04-10 83 views
0

我正在使用XCode 3.2.6並在我的iPhone 4s上進行測試。NSFetchedResultsController切換部分

我的應用程序在UITableView中顯示產品列表。

我有一個NSFetchedResultsController(NFC)的「sectionNameKeyPath」設置,所以我看到我的字母部分標題都很好。我想在我的UISearchBar中使用這個相同的控制器,但是當用戶鍵入搜索一個項目時,我不想在後一種情況下顯示小節標題。

有誰知道我是否可以重複使用相同的NFC並「關閉」sectionNameKeyPath功能,還是需要使用單獨的NFC?

任何幫助將是偉大的或實際上鍊接到這可能表明它已完成的例子。 謝謝 - Ronan

回答

0

sectionNameKeyPath是隻讀的。所以一種方法是在視圖控制器上有一個布爾搜索狀態,==如果你正在搜索。然後......

// assuming ARC 

- (void)setSearch:(BOOL)search { 

    if (_search == search) return; 
    _search = search; 
    self.fetchedResultsController = nil; 
} 

這將導致你的FRC延遲初始化它的要求下一次發生......

- (NSFetchedResultsController *)fetchedResultsController { 

    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    // here's the key - set this based on search state 
    NSString *sectionNameKeyPath = (self.search)? nil : @"mySectionNameKeyPath"; 

    _fetchedResultsController = 
     [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
              managedObjectContext:moc 
               sectionNameKeyPath:sectionNameKeyPath 
                 cacheName:@"Root"]; 

    // and so on 
} 

感覺就像一個浪費的查詢來改變搜索模式,但我希望這不是太昂貴。