如何使用 NSMutableArray/NSMutableDictionary 中的 NSPredicate 创建 NSMutableArray
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;
}
);
我想从那个数组中过滤它,我需要像这样 Using NSPredicate
FilterArray = {
FName = @"Achal";
LName = @"Gandhi";
},
{
FName = @"Jenish";
LName = @"Patel";
}
{
FName = @"Pritesh";
LName = @"Dave";
}
{
FName = @"Mehul";
LName = @"Shah";
}
);
原始数组中只有 "FName" 和 "LName" 键是必需的。
NSPrecate returns 按一个或多个条件过滤的对象列表。
在您的情况下,您想获得一些数组但具有不同的对象。
您可以使用此代码:
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"]}];
}];
如果您有任何问题,请告诉我。
我有 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;
}
);
我想从那个数组中过滤它,我需要像这样 Using NSPredicate
FilterArray = {
FName = @"Achal";
LName = @"Gandhi";
},
{
FName = @"Jenish";
LName = @"Patel";
}
{
FName = @"Pritesh";
LName = @"Dave";
}
{
FName = @"Mehul";
LName = @"Shah";
}
);
原始数组中只有 "FName" 和 "LName" 键是必需的。
NSPrecate returns 按一个或多个条件过滤的对象列表。 在您的情况下,您想获得一些数组但具有不同的对象。 您可以使用此代码:
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"]}];
}];
如果您有任何问题,请告诉我。