我有一个字典定义为
@property (retain, nonatomic) NSMutableDictionary *MyDictionary;
我试图像这样得到输出
NSLog(@"%@",MyDictionary);
这就是我获得的输出
{ Category=(
{
code=12; Name="John Smith"
},
{
code=21; Name="Bobby Smith"
},
{
code=31; Name="Smith Jones"
} );
Detail = {
code=1;
Text="Developer"
};
}
我的表格单元格中填充了名字,John Smith,Bobby Smith等。我需要的是在点击特定单元格时获取代码。例如,如果我点击名称John Smith,我应该得到值12
这是我目前的代码
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSArray *allNames = [MyDictionary allValues];
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"Name == %@", cell.textLabel.text];
NSArray *filteredNames = [allNames filteredArrayUsingPredicate:resultPredicate];
NSLog(@"%@",filteredNames);
}
filteredNames不包含任何过滤的对象。我如何获得代码的价值?
答案 0 :(得分:1)
编辑:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *getCodeValue = [[[myDic objectForKey:@"Category"] objectAtIndex:indexPath.row] objectForKey:@"code"]
NSLog (@"%@", getCodeValue)
}
在didSelectRowAtIndexPath
方法
答案 1 :(得分:0)
将代码分配给单元格的标签并在你的didSelectRowAtIndexPath中使用它
答案 2 :(得分:0)
我建议创建一个UITableViewCell的子类,它只有一个标签和一个整数值作为属性。然后将其初始化如下:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellClassNameHere"];
cell.codeValue = [[myDic objectForKey:@"Category"] objectAtIndex:indexPath.row];
}
还要添加以下代码,以便在触摸单元格时检索代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *codeValue = cell.codeValue;
NSLog(@"%@", codeValue);
}
如上面的评论所述,请确保您的NSDictionary正确初始化:
NSMutableDictionary myDic = [[NSMutableDictionary alloc] init]; //This can be replaced with however you're getting your code values.
然后你应该好好去!应该注意的是,此答案中没有发布任何代码,所以如果您有任何问题,请告诉我们!
马特