I need to split one `NSArray` into `NSDictionary`. Every key in `NSDictionary` will contain an `NSArray` with the object with the same value.

i.e. I have an array with 1000 customers and I want create an `NSDictionary` based on their zip code.

I wrote this code into an `NSArray` category and it works, but I'm looking for a better name and a way (if it exists) to do the same job with the KVC.

    -(NSDictionary *)groupArrayWithBlock:(id<NSCopying> (^)(id obj))block {
        NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
        
        for (id obj in self) {
            id<NSCopying> key = block(obj);
            if (! dictionary[key]) {
                NSMutableArray *arr = [NSMutableArray array];
                dictionary[key] = arr;
            }
            [dictionary[key] addObject:obj];
        }
        return [dictionary copy];
    }