Daniel Tull avatar Daniel Tull committed b62c2fb

Actually write the class.

Comments (0)

Files changed (2)

DTFoundation/DTSortedArray.h

 #import <Foundation/Foundation.h>
 
 
-@interface DTSortedArray : NSObject {
+@interface DTSortedArray : NSMutableArray {
 	NSMutableArray *array;
 	SEL sortSelector;
+	NSComparator comparator;
 }
 
 - (id)initWithSortSelector:(SEL)aSelector;
-- (void)addObject:(id)anObject;
-- (void)addObjectsFromArray:(NSArray *)otherArray;
+- (id)initWithComparator:(NSComparator)cmptr;
+- (void)sort;
 
 @end

DTFoundation/DTSortedArray.m

 
 @implementation DTSortedArray
 
+- (id)init {
+	
+	if (!(self = [super init])) return nil;
+	
+	array = [[NSMutableArray alloc] init];
+	
+	return self;
+	
+}
+
 - (id)initWithSortSelector:(SEL)aSelector {
 	
-	if (!(self = [super init])) return nil;
+	if (!(self = [self init])) return nil;
 	
 	sortSelector = aSelector;
 	
 	return self;
 }
 
-- (void)addObject:(id)anObject {
-	NSMutableArray *tempArray = [NSMutableArray arrayWithArray:(NSArray *)self];
-	[tempArray addObject:anObject];
-	[tempArray sortedArrayUsingSelector:sortSelector];
-}
-
-- (void)addObjectsFromArray:(NSArray *)otherArray {
+- (id)initWithComparator:(NSComparator)cmptr {
 	
+	if (!(self = [self init])) return nil;
+	
+	comparator = cmptr;
+	
+	return self;
 }
 
 - (void)sort {
-	NSMutableArray *tempArray = [NSMutableArray arrayWithArray:(NSArray *)self];
-	[tempArray sortedArrayUsingSelector:sortSelector];
+	if (comparator)
+		[array sortUsingComparator:comparator];
+	else if (sortSelector)
+		[array sortUsingSelector:sortSelector];
+}
+
+#pragma mark -
+#pragma mark NSArray primative methods
+
+- (NSUInteger)count {
+	return [array count];
+}
+
+- (id)objectAtIndex:(NSUInteger)index {
+	return [array objectAtIndex:index];
+}
+
+#pragma mark -
+#pragma mark NSMutableArray primative methods
+
+- (void)insertObject:(id)anObject atIndex:(NSUInteger)index {
+	[array insertObject:anObject atIndex:index];
+	[self sort];
+}
+
+- (void)removeObjectAtIndex:(NSUInteger)index {
+	[array removeObjectAtIndex:index];
+}
+
+- (void)addObject:(id)anObject {
+	[array addObject:anObject];
+	[self sort];
+}
+
+- (void)removeLastObject {
+	[array removeLastObject];
+}
+
+- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject {
+	[array replaceObjectAtIndex:index withObject:anObject];
+	[self sort];
 }
 
 @end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.