objs = [[self source] fetchObjects];
- if ([self auxiliaryQualifier])
+ if ([self auxiliaryQualifier] != nil)
objs = [objs filteredArrayUsingQualifier:[self auxiliaryQualifier]];
if ((groups = [self groupings]) != nil) {
grouping = [groups lastObject];
- if ((sos = [self sortOrderings]) != nil) {
+ if ((sos = [self sortOrderings]) != nil)
[grouping setSortOrderings:sos];
- }
+
groupDict = [objs arrayGroupedBy:grouping];
allKeys = [groupDict allKeys];
allKeys = [allKeys sortedArrayUsingSelector:@selector(compare:)];
objs = [groupDict flattenedArrayWithHint:cnt andKeys:allKeys];
}
- else if ([self sortOrderings])
+ else if ([self sortOrderings] != nil)
objs = [objs sortedArrayUsingKeyOrderArray:[self sortOrderings]];
objs = [objs copy];
ms = [NSMutableString stringWithCapacity:64];
[ms appendFormat:@"<0x%08X[%@]:", self, NSStringFromClass([self class])];
- if (self->source) [ms appendFormat:@" source=%@", self->source];
- if (self->auxiliaryQualifier)
+ if (self->source != nil)
+ [ms appendFormat:@" source=%@", self->source];
+ if (self->auxiliaryQualifier != nil)
[ms appendFormat:@" qualifier=%@", self->auxiliaryQualifier];
- if (self->sortOrderings)
+ if (self->sortOrderings != nil)
[ms appendFormat:@" orderings=%@", self->sortOrderings];
- if (self->groupings)
- [ms appendFormat:@" groupings=%@", self->sortOrderings];
+ if (self->groupings != nil)
+ [ms appendFormat:@" groupings=%@", self->groupings];
[ms appendString:@">"];
return ms;
@end /* EOFilterDataSource */
+
@implementation NSDictionary(EOFilterDataSource)
- (NSArray *)flattenedArrayWithHint:(unsigned int)_hint
andKeys:(NSArray *)_keys
{
+ /*
+ This works on a dictionary of arrays. It walks over the keys in the given
+ order and flattenes the value arrays into one array.
+ */
NSMutableArray *result = nil;
unsigned int i, cnt;