Filtering NSDictionary with predicate

前端 未结 4 1735
一生所求
一生所求 2020-12-13 15:31

I am using a NSDictionary that itself contains dictionaries some keys and its values.The format is like ,

{

\"1\" = {
        \"key1\" = \"ss\",
          \         


        
4条回答
  •  时光说笑
    2020-12-13 16:28

    This works. You can set your own values here.

    NSArray *data = [NSArray arrayWithObjects:[NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"ss",@"how", nil] forKeys:[NSArray arrayWithObjects:@"key1",@"key1", nil]],[NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"tt",@"vv", nil] forKeys:[NSArray arrayWithObjects:@"key1",@"key2", nil]],[NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"vv",@"tt", nil] forKeys:[NSArray arrayWithObjects:@"key1",@"key2", nil]],nil];    
    NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(key1 == %@) AND (key2==%@)", @"tt",@"vv"]];
    NSLog(@"%@",filtered);
    

    Output:

    (
        {
            key1 = tt;
            key2 = vv;
        }
    )
    

    For clearer explanation:

    NSMutableDictionary *dict4=[[NSMutableDictionary alloc]init];
    [dict4 setObject:@"ss" forKey:@"key1"];
    [dict4 setObject:@"how" forKey:@"key2"];
    NSMutableDictionary *dict5=[[NSMutableDictionary alloc]init];
    [dict5 setObject:@"tt" forKey:@"key1"];
    [dict5 setObject:@"vv" forKey:@"key2"];
    NSMutableDictionary *dict6=[[NSMutableDictionary alloc]init];
    [dict6 setObject:@"vv" forKey:@"key1"];
    [dict6 setObject:@"tt" forKey:@"key2"];
    
    NSMutableArray  *data = [[NSMutableArray alloc]init];  
    [data addObject:dict4];
    [data addObject:dict5];
    [data addObject:dict6];
    
    NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(key1 == %@) AND (key2==%@)", @"tt",@"vv"]];
    NSLog(@"%@",filtered);
    

    Output:

    (
        {
            key1 = tt;
            key2 = vv;
        }
    )
    

提交回复
热议问题