2016-09-22 58 views
0

创建我已经NSMutable数组,它包含在其索引中的某些字段作为键和值的对像这样如何使用NSPredicate的NSMutableArray从的NSMutableArray /的NSMutableDictionary

Result =  (
      { 
     FName = @"Achal"; 
     MName = @"Pradip"; 
     LName = @"Gandhi"; 
     AGE = 35; 
    }, 
    { 
     FName = @"Jenish"; 
     MName = @"Pavan"; 
     LName = @"Patel"; 
     AGE = 40; 
    } 
    { 
     FName = @"Pritesh"; 
     MName = @"Amit"; 
     LName = @"Dave"; 
     AGE = 50; 
    } 
    { 
     FName = @"Mehul"; 
     MName = @"Nikhil"; 
     LName = @"Shah"; 
     AGE = 40; 
    } 
); 

从那个阵列I要过滤它,我需要进行放使用NSPredicate这样

FilterArray = { 
     FName = @"Achal"; 
     LName = @"Gandhi"; 
    }, 
    { 
     FName = @"Jenish"; 
     LName = @"Patel"; 
    } 
    { 
     FName = @"Pritesh"; 
     LName = @"Dave"; 
    } 
    { 
     FName = @"Mehul"; 
     LName = @"Shah"; 
    } 
); 

只有“FName参数” &“LName的”键从原来的阵列必需。

+0

使用你的数组像字典的数组,这就是所有,你需要使用该键的地方 –

回答

0

我用下面的代码和它的完美工作做了解决方案。

NSMutableArray *tempArray = [[NSMutableArray alloc]init]; 


for(int i=0;i < self.Result.count;i++){ 
    NSMutableDictionary *cartData = [[NSMutableDictionary alloc]init]; 

    [cartData setObject:[[Result objectAtIndex:i] valueForKey:@"Fname"] forKey:@"FName"]; 


    [cartData setObject:[[Result objectAtIndex:i] valueForKey:@"LName"] forKey:@"LName"]; 

    [tempArray addObject:cartData]; 
} 

但这是一个循环中完成,但我想使用并与NSPredicate帮助解决这个问题。

1

NSPrecate返回按一个或多个条件过滤的对象列表。 在你的情况,你想获得一些数组,但具有不同的对象。 您可以使用此代码:

NSMutableArray *FilterArray =[NSMutableArray new]; 
    for (NSDictionary *dic in Result){ 
     NSDictionary *newdic = [NSDictionary dictionaryWithObjectsAndKeys:[dic objectForKey:@"FName"],@"FName",[dic objectForKey:@"LName"],@"LName", nil]; 
     [FilterArray addObject:newdic]; 
    } 
0

你可以得到渴望的输出结果阵列,而不使用NSPredicate

这里是一小段代码

NSArray *arrObjects = [responseObject valueForKey:@"Result"]; 

[arrObjects enumerateObjectsUsingBlock:^(NSDictionary *_Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
    [arrFilterResult addObject:@{@"FName":[obj valueForKey:@"FName"],@"LName":[obj valueForKey:@"LName"]}]; 
}]; 

,如果您有任何问题,让我知道。

相关问题