user2431031
user2431031

Reputation: 13

How get values of particular key in an array of Dictionaries?

i'm getting data like below and i want to get the data like names= app,app1,app2 without looping .how can i achieve this one without looping?

(
        {
        date = "12/12/12";
        name = app;
    },
        {
        date = "11/02/12";
        name = app1;
    },
        {
        date = "14/05/12";
        name = app2;
    }
)

Upvotes: 1

Views: 3483

Answers (2)

Grady Player
Grady Player

Reputation: 14549

NSArray * yourArray = @[
                        @{
                            @"date" : @"12/12/12",
                            @"name" : @"app"
                        },
                        @{
                            @"date" : @"11/02/12",
                            @"name" : @"app1"
                        },
                        @{
                            @"date" : @"14/05/12",
                            @"name" : @"app2"
                        }
                      ];

NSArray * selectedArray = [yourArray valueForKeyPath:@"@distinctUnionOfObjects.name"];
NSArray * sortedArray = [selectedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [obj1 compare:obj2];
}];
NSString * str = [NSString stringWithFormat:@"name=%@",[sortedArray componentsJoinedByString:@","]];
NSLog(@"%@",str);

using a key value collection operator: see http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/KeyValueCoding/Articles/CollectionOperators.html

Upvotes: 5

Balu
Balu

Reputation: 8460

Yes.possible try like this.no need to take any looping concept here this one very useful when there is large data.

NSString *str=[[array1 valueForKeyPath:@"name"] componentsJoinedByString:@","];
NSLog(@"desired string:%@",str);


NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
    [dict setObject:@"app" forKey:@"name"];

    NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init];
    [dict1 setObject:@"app1" forKey:@"name"];


    NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init];
    [dict2 setObject:@"app2" forKey:@"name"];
    NSArray *array1 = [[NSArray alloc]initWithObjects:dict,dict1,dict2, nil];

    NSString *str=[[array1 valueForKeyPath:@"name"] componentsJoinedByString:@","];
    NSLog(@"desired string:%@",str);

    O/P:- app,app1,app2

Upvotes: 6

Related Questions