gpt4 book ai didi

ios - NSFetchedResultsController 委托(delegate)方法调用谓词更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:38 25 4
gpt4 key购买 nike

我有一个简单的应用程序,其中有国家有城市,而城市又有人。我想在表格 View 中显示国家列表。我使用 NSFetchedResultsController 来获取所有数据。这是设置:

-(void)initializeFetchedResultsController
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Country"];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
fetchRequest.fetchBatchSize = 30;
self.fetchResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[NSManagedObjectContext managedObjectContext]
sectionNameKeyPath:@"nameFirstLetter"
cacheName:nil];
self.fetchResultsController.delegate = self;
[self.fetchResultsController performFetch:nil];
}

我还添加了通过在搜索栏中输入国家/地区名称进行搜索的功能,因此我实现了 UISearchBarDelegate 方法:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if([searchText isEqualToString:@""])
{
self.fetchResultsController.fetchRequest.predicate = nil;
}
else
{
self.fetchResultsController.fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", searchText];
}

[self.fetchResultsController performFetch:nil];
[self.tableView reloadData];
}

这行得通,但不是我想要的方式。我预计在谓词更改时,我的 NSFetchResultsControllerDelegate 委托(delegate)方法将再次被调用,这样我就可以从我的 TableView 中插入或删除项目/部分(我想要动画),而不必自己弄清楚,添加和删除了什么。但事实并非如此,相反,如果我更改谓词,则不会调用委托(delegate)方法,我必须做一个简单的 [self.tableView reloadData]。我是在做错什么,还是只是它应该工作的方式,我不能走这条捷径?

最佳答案

你没有做错。事情就是这样,没有捷径可走。您必须实现自己的代码来在获取之间为 TableView 设置动画。

关于ios - NSFetchedResultsController 委托(delegate)方法调用谓词更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19296476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com