我使用具有神奇记录的核心数据,我尝试使用表格视图中的搜索栏过滤数据。
我写了两个方法来获取行数和单元格的名称:
-(int) dammiNumeroCercati:(NSString *)searchBar
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar];
NSArray*arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate];
return arra.count;
}
-(NSString*) dammiNomeRicettaCercata:(NSString *)searchBar mostrataNellaCella: (int) cella
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nome CONTAINS [cd] %@", searchBar];
NSArray *arra = [Ricetta MR_findAllSortedBy:@"nome" ascending:YES withPredicate:predicate];
Ricetta*ctn = arra[cella];
return [NSString stringWithFormat:@"%@", ctn.nome];
}
然后我在numberOfRowsInSection:和cellForRowAtIndexPath里面调用这个方法:在if循环中:
if (self.mySearchBar.isFirstResponder){
// the above methods
} else {
// the normals methods to have all the data
}
有人知道我错在哪里或者我是否想念某些事情?
答案 0 :(得分:0)
searchBar
通常是UISearchBar
,而不是字符串。
您应该使用searchBar.text
并在您的方法中处理它。
此外,在表视图的数据源方法中,您必须确保哪个表视图导致回调,然后返回正确的计数/字符串。通常通过比较指向两个表的指针(原始表视图和搜索结果表视图)来检查。
-(NSUInteger)tableView:(UITableView*)tableView
numberOfRowsInSection:(NSUInteger)section {
if (tableView == _tableView) {
// return the usual row count
}
return [self dammiNumeroCercati:_searchBar.text];
}