// // 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) { [indexMap setObject:aKey forKey:[NSString stringWithFormat:@"%d", index]]; index++; 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