从ios中的字典数组中的键中获取数据

时间:2013-09-02 12:05:19

标签: ios objective-c nspredicate nsmutabledictionary

我有一个字典定义为

@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不包含任何过滤的对象。我如何获得代码的价值?

3 个答案:

答案 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.

然后你应该好好去!应该注意的是,此答​​案中没有发布任何代码,所以如果您有任何问题,请告诉我们!

马特