[英]How to create NSMutableArray using NSPredicate from the NSMutableArray/NSMutableDictionary
我有NSMutable数组,它在索引中包含某些字段,像这样的键和值对
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;
}
);
我想从该数组中过滤它,我需要像这样使用NSPredicate放出
FilterArray = {
FName = @"Achal";
LName = @"Gandhi";
},
{
FName = @"Jenish";
LName = @"Patel";
}
{
FName = @"Pritesh";
LName = @"Dave";
}
{
FName = @"Mehul";
LName = @"Shah";
}
);
原始数组仅需要“ FName”和“ LName”键。
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];
}
我用下面的代码及其完美的工作方式提出了解决方案。
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的帮助下使用和解决它。
您可以在不使用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"]}];
}];
如果您有任何问题,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.