Skip to content

Instantly share code, notes, and snippets.

@yangmeyer
Last active August 29, 2015 14:04
Show Gist options
  • Save yangmeyer/61536e849943423ea67a to your computer and use it in GitHub Desktop.
Save yangmeyer/61536e849943423ea67a to your computer and use it in GitHub Desktop.
NSMutableArray category for inserting objects into a sorted list
//
// Created by Yang Meyer on 01.08.14.
// Licensed as CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/)
//
// NSMutableArray+YMYSorted.h
// Gemba
#import <Foundation/Foundation.h>
@interface NSMutableArray (YMYSorted)
@property (copy) NSComparator ymy_comparator;
- (void)ymy_insertSortedObject:(id)obj;
@end
// ---------------------
//
// NSMutableArray+YMYSorted.m
//
#import "NSMutableArray+YMYSorted.h"
#import <objc/runtime.h>
@implementation NSMutableArray (YMYSorted)
- (void)setYmy_comparator:(NSComparator)comparator
{
objc_setAssociatedObject(self, @selector(ymy_comparator), comparator, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (NSComparator)ymy_comparator
{
return objc_getAssociatedObject(self, @selector(ymy_comparator));
}
- (void)ymy_insertSortedObject:(id)obj
{
NSUInteger insertionIndex = [self indexOfObject:obj
inSortedRange:NSMakeRange(0, self.count)
options:NSBinarySearchingInsertionIndex
usingComparator:self.ymy_comparator];
[self insertObject:obj atIndex:insertionIndex];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment