我正在使用XCode 3.2.6并在我的iPhone 4s上进行测试。
我的应用程序在UITableView中显示产品列表。
我有一个NSFetchedResultsController(NFC),其中设置了“sectionNameKeyPath”,所以我看到我的字母部分标题都很好。我想在我的UISearchBar中使用相同的控制器,但是当用户键入搜索项目时,我不想在后一种情况下显示节标题。
有谁知道我是否可以重复使用相同的NFC并“关闭”sectionNameKeyPath功能,还是需要使用单独的NFC?
任何帮助都会很棒,或者确实链接到示例,这可能会显示它已完成。 谢谢 - 罗南
答案 0 :(得分:0)
sectionNameKeyPath
只读。所以一种方法是在视图控制器上有一个布尔搜索状态== YES,如果你正在搜索。然后......
// 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
}
感觉浪费的查询可以改变搜索模式,但希望这不会太昂贵。