有一个更好的解决方案,弗朗索瓦。 创建,从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]];
然后,当哟U将要传递的用户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数据源和委托方法。
好的,我明白了你的观点。我从错误的方面解决了问题,并且我被相同价值观的非问题所打扰。谢谢你的帮助。 – 2013-04-28 10:55:04
我很高兴我的帮助。如果它解决了你的问题,也请投票:) – 2013-04-28 10:57:43
还没有足够的声望做到这一点,但我会:) – 2013-04-28 11:06:21