我已经在我的应用程序中实现了一个搜索栏。
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[_tableView_Rego resignFirstResponder];
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString
*)searchText
{
if(searchText.length == 0)
{
isFiltered = NO;
}
else
{
isFiltered = YES;
arrayFilter = [[NSMutableArray alloc]init];
for (NSString *str in arrayNameList)
{
NSRange stringRange = [str rangeOfString:searchText
options:NSCaseInsensitiveSearch];
if (stringRange.location != NSNotFound)
{
[arrayFilter addObject:str];
}
}
}
[_tableView_Rego reloadData];
}
当我在 arrayNameList
中提供静态数据时,它可以工作,但是当我通过后端提供动态数据时,它会崩溃并出现此错误:
-[nameListMClass rangeOfString:options:]:发送到实例0x60000042dda0的无法识别的选择器
为什么?
你的数组arrayNameList
包含一个类 nameListMClass
的对象,该对象可能不是字符串,并且不提供方法rangeOfString:options:
。您应该检查arrayNameList
的成员并检查他们来自哪里。