Last active
September 25, 2017 11:37
-
-
Save Dev-Khaled/c26612d587e61fbcbdfdfb3065b02ec2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
NS_ASSUME_NONNULL_BEGIN | |
@interface NSArray (FilterDuplicates) | |
- (NSMutableArray *)filterDuplicates:(NSString *)key; | |
- (NSMutableArray *)filterDuplicates:(NSString *)key sort:(BOOL)sort ascending:(BOOL)ascending; | |
@end | |
NS_ASSUME_NONNULL_END |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "NSArray+FilterDuplicates.h" | |
@implementation NSArray (FilterDuplicates) | |
- (NSMutableArray *)filterDuplicates:(NSString *)key { | |
return [self filterDuplicates:key sort:false ascending:false]; | |
} | |
- (NSMutableArray *)filterDuplicates:(NSString *)key sort:(BOOL)sort ascending:(BOOL)ascending { | |
NSArray *sortedDescArray; | |
if (sort) { | |
// First sort array | |
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:ascending]; | |
sortedDescArray = [self sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; | |
} else { | |
sortedDescArray = self; | |
} | |
NSMutableArray *myFilteredArrayOfObjects = [NSMutableArray array]; | |
[sortedDescArray indexesOfObjectsPassingTest:^BOOL(id object, NSUInteger idx, BOOL *stop) { | |
if ([[myFilteredArrayOfObjects valueForKeyPath:key] containsObject:[object valueForKey:key]]) { | |
return NO; | |
} else { | |
[myFilteredArrayOfObjects addObject:object]; | |
return YES; | |
} | |
}]; | |
return myFilteredArrayOfObjects; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment