繁体   English   中英

如何使用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;
    }
);

我想从该数组中过滤它,我需要像这样使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM