有一个更好的解决方案,弗朗索瓦。从你的NSDictionary
(我将在这里调用它myDictionary
)创建一个NSArray
像这样的(在你的接口文件中声明它):
NSArray *arrayForTableView;
然后,在加载 NSDictionary 之后,执行以下操作:
arrayForTableView = [myDictionary allKeys]; // so you will have an array of all UserID's
现在,在您的tableView: cellForRowAtIndexPath:
方法中,您可以这样做:
cell.textLabel.text = [myDictionary objectForKey:[arraForTableView objectAtIndex:indexPath.row]];
然后,当您想要在用户选择单元格时传递用户 ID 时,tableView: didSelectRowAtIndexPath:
您只需这样做:
id userIDSelected = [arraForTableView objectAtIndex:indexPath.row];
然后,当您想根据搜索过滤数组时,您可以arrayForTableView
通过这种方式“扫描”您的 NSDictionary 来简单地重新创建您的 , :
NSString *typedString;
NSMutableArray *arrayFiltered = [NSMutableArray array];
for (int i = 0; i < [[myDictionary allKeys] count]; i++)
{
if ([[myDictionary objectForKey:[[myDictionary allKeys] objectAtIndex:i]] rangeOfString:typedString].location != NSNotFound)
{
[arrayFiltered addObject:[[myDictionary allKeys] objectAtIndex:i]];
}
}
arrayForTableView = arrayFiltered;
这样,您甚至不需要更改 UITableView 数据源和委托方法。