我正在使用搜索栏来获取用户输入的文本,然后使用它来过滤NSArray,然后将新构造的数组分配给指定的类'array属性。代码如下:
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchController.searchBar.text];
NSArray *temp = [_array filteredArrayUsingPredicate:predicate];
_resultViewController.dynamicArray = temp;
}
但是我的resultViewController的tableView没有显示任何数据。但是,如果我使用以下内容,它可以工作:
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSArray *temp = [[NSArray alloc]initWithObjects:@"hello",@"bye",@"why",@"okay", nil];
_resultViewController.dynamicArray = temp;
}
我不太确定如何解决这个问题。看起来当我将_resultViewController的动态数组分配给temp时,在使用过滤数组时还没有设置temp。但它在第二种情况下工作正常,所以我知道其余代码是正确的。
思想?
答案 0 :(得分:0)
在不了解_resultViewController.dynamicArray
的情况下,无法提供帮助。需要考虑的事情:
_resultViewController
您认为它是哪个视图控制器 - 正在显示其视图的实际视图控制器?
为什么只设置_resultViewController.dynamicArray
导致该视图控制器中发生的任何内容?例如,在我自己的代码中,所讨论的视图控制器通常是一个UITableViewController - 因此,在设置其模型数组后,我总是调用表视图的reloadData
,以便我们实际上看到过滤后的数据。