NSOrderedSet is awesome for this occasion as it allows you to get the unique strings.
NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"2222222" forKey:@"epoch"];
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"2222222" forKey:@"epoch"];
NSDictionary *dict3 = [NSDictionary dictionaryWithObject:@"1111111" forKey:@"epoch"];
NSArray *dictArray = @[dict1, dict2, dict3];
NSMutableArray *finalArray = [[NSMutableArray alloc]init];
NSArray *epoches = [dictArray valueForKey:@"epoch"];
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:epoches];
for (NSString *string in orderedSet) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"epoch == %@", string];
NSArray *resultsArray = [dictArray filteredArrayUsingPredicate:predicate];
[finalArray addObject:resultsArray];
}