在我的应用程序中,我有 3 NSMutableArray
sempJsonArray
searchArray
和nameArray
empJsonArray
使用 JSON 填充。
nameArray
用valueForKey:@"Name"
from填充empJsonArray
,searchArray
最初用 的内容填充empJsonArray
。
数据显示在UITableView
现在我UISearchBar
用于搜索我的UITableView
并显示相关数据。UISearchBar
工作正常,但显示搜索数据时出现问题。假设当我搜索“T”时,我有 2 个包含字母“T”的名称UITableView
显示 2 个项目,但形成了nameArray
(即索引 0 和 1)的顶部,而不是包含“T”的项目。
我也在使用NSSortDescriptor
.
这是代码: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MYCell"];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MYCell"];
}
sorter = [[NSSortDescriptor alloc]initWithKey:@"Name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
sortedArray = [self.empJsonArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];
cell.textLabel.text = [[sortedArray objectAtIndex:indexPath.row]objectForKey:@"Name"];
nameArray = [[NSMutableArray alloc]initWithArray:[sortedArray valueForKey:@"Name"]];
return cell;
}
搜索方法:
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {
if ([searchText length]==0) {
[searchArray removeAllObjects];
[searchArray addObjectsFromArray:nameArray];
}
else {
[searchArray removeAllObjects];
for (NSString *string in nameArray) {
NSRange r = [string rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (r.location != NSNotFound) {
[searchArray addObject:string];
}
}
}
[empTable reloadData];
}