diff options
Diffstat (limited to 'Classes/SectionDictionary.m')
| -rw-r--r-- | Classes/SectionDictionary.m | 64 | 
1 files changed, 64 insertions, 0 deletions
diff --git a/Classes/SectionDictionary.m b/Classes/SectionDictionary.m new file mode 100644 index 0000000..8845b2b --- /dev/null +++ b/Classes/SectionDictionary.m @@ -0,0 +1,64 @@ +// +//  SectionDictionary.m +//  PicCast +// +//  Created by Matthew Handler on 4/23/11. +//  Copyright 2011 Earl Industries. All rights reserved. +// + +#import "SectionDictionary.h" + + +@implementation SectionDictionary + +//@synthesize index; + +- (SectionDictionary *) init { +	index = 0; +	indexMap = [[[NSMutableDictionary alloc] init] retain]; +	theRealDictionary = [[[NSMutableDictionary alloc] init] retain]; +	[super init]; +	 +	return self; +} + +- (id)forwardingTargetForSelector:(SEL)aSelector +{ +    return theRealDictionary; +} + +- (void) setObject:(id)anObject forKey:(id)aKey { +	[indexMap setObject:aKey forKey:[NSString stringWithFormat:@"%d", index]]; +	index++; +	[theRealDictionary setObject:anObject forKey:aKey]; +} + +// lets you push objects into sections without worry about storage +- (void) appendObject:(id)anObject forKey:(id)aKey { +	NSMutableArray *store = [theRealDictionary objectForKey:aKey]; +	if (store == nil) { +		NSMutableArray *store = [[[NSMutableArray alloc] init] autorelease]; +		[store addObject:anObject]; +		[theRealDictionary setObject:store forKey:aKey]; +	} +	else [store addObject:anObject]; +	 +	NSLog(@"number of rows: %d", [[theRealDictionary objectForKey:aKey] count]); +} + +- (id) objectForIndex:(NSInteger)i { +	return [theRealDictionary objectForKey:[indexMap objectForKey:[NSString stringWithFormat:@"%d", i]]]; +} + +- (NSString *) keyForIndex:(NSInteger)i { +	return [indexMap objectForKey:[NSString stringWithFormat:@"%d", i]]; +} +	  +- (void) dealloc { +	[theRealDictionary release]; +	[indexMap release]; +	[super dealloc]; +} + + +@end  | 
