我有一个 plist(字典数组),我正在读入一个 NSArray,我用它来填充一个表。它是人员及其工作地点、电话号码等的列表。我添加了一个 UISearchBar 并实现了 textDidChange 方法。
当我按人的姓氏搜索时,我确实在表格中看到了过滤后的列表,但是我认为我没有正确存储过滤后的结果。我正在使用 NSMutable 数组,但我丢失了键:值配对。
有人可以指出我正确的方向吗?我最终想单击过滤后的名称并推送到详细的视图控制器。我相信我的问题是我试图在 NSMutableArray 中捕获过滤后的结果,但我不确定。
我已经做了很多谷歌搜索,但似乎无法将这些放在我的脑海中。任何帮助表示赞赏。
亲切的问候,达林
这是我用来加载 plist 的数组。
-(NSArray *)content
{
if (!content){ {
content = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ophonebook" ofType:@"plist"]];
NSSortDescriptor* nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Last" ascending:YES];
content= [content sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameSortDescriptor]];
}
return content;
}
这是 UISearchBar 方法
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (searchText.length == 0)
{
isFiltered= NO;
} else {
isFiltered= YES;
filteredPeople = [[NSMutableArray alloc]init];
for (NSDictionary *dict in content)
{
NSString *last = [dict objectForKey:@"Last"];
NSRange lastRange = [last rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (lastRange.location != NSNotFound)
{
[filteredPeople addObject: [dict objectForKey:@"Last"]];
}
}
}
[myTableView reloadData];
}