I have an NSDictinary
look like this:
NSArray *duplicates = @[@{@\"name\": @\"a\", @\"id\": @\"123\"}, @{@\"name\": @\"c\", @\"id\": @\"234\"},
Have you try this code
NSArray *duplicates = @[@{@"name": @"a"}, @{@"name": @"c"}, @{@"name": @"a"}, @{@"name": @"c"}, @{@"name": @"a"}];
NSSet *set = [NSSet setWithArray:duplicates];
NSArray *uniqueArray = [set allObjects];
Just use following code for remove duplicates values.
your_array = [self groupsWithDuplicatesRemoved:(NSArray *)your_array myKeyParameter:@"your_key_name"];
You have to just call groupsWithDuplicatesRemoved
this method with key name.
- (NSMutableArray *) groupsWithDuplicatesRemoved:(NSArray *) groups myKeyParameter:(NSString *)myKeyParameter {
NSMutableArray * groupsFiltered = [[NSMutableArray alloc] init]; //This will be the array of groups you need
NSMutableArray * groupNamesEncountered = [[NSMutableArray alloc] init]; //This is an array of group names seen so far
NSString * name; //Preallocation of group name
for (NSDictionary * group in groups) { //Iterate through all groups
name = [NSString stringWithFormat:@"%@", [group objectForKey:myKeyParameter]]; //Get the group name
if ([groupNamesEncountered indexOfObject: name]==NSNotFound) { //Check if this group name hasn't been encountered before
[groupNamesEncountered addObject:name]; //Now you've encountered it, so add it to the list of encountered names
[groupsFiltered addObject:group]; //And add the group to the list, as this is the first time it's encountered
}
}
return groupsFiltered;
}
Hope, this is what you're looking for. Any concern get back to me. :)