Reputation: 13
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
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
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