FEMMergeableCollection.m 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // Created by zen on 12/08/14.
  3. // Copyright (c) 2014 Yalantis. All rights reserved.
  4. //
  5. #import "FEMMergeableCollection.h"
  6. @implementation NSArray (FEMMergeableCollection)
  7. - (NSArray *)collectionByMergingObjects:(NSArray *)array {
  8. return [[self mutableCopy] collectionByMergingObjects:array];
  9. }
  10. @end
  11. @implementation NSMutableArray (FEMMergeableCollection)
  12. - (NSArray *)collectionByMergingObjects:(NSArray *)array {
  13. if (array.count == 0) return self;
  14. NSMutableSet *appendingObjectsSet = [[NSMutableSet alloc] initWithArray:array];
  15. [appendingObjectsSet minusSet:[NSSet setWithArray:self]];
  16. [self addObjectsFromArray:[appendingObjectsSet allObjects]];
  17. return self;
  18. }
  19. @end
  20. @implementation NSSet (FEMMergeableCollection)
  21. - (NSSet *)collectionByMergingObjects:(NSSet *)set {
  22. return [[self mutableCopy] collectionByMergingObjects:set];
  23. }
  24. @end
  25. @implementation NSMutableSet (FEMMergeableCollection)
  26. - (NSSet *)collectionByMergingObjects:(NSSet *)set {
  27. [self unionSet:set];
  28. return self;
  29. }
  30. @end
  31. @implementation NSOrderedSet (FEMMergeableCollection)
  32. - (NSOrderedSet *)collectionByMergingObjects:(NSOrderedSet *)orderedSet {
  33. return [[self mutableCopy] collectionByMergingObjects:orderedSet];
  34. }
  35. @end
  36. @implementation NSMutableOrderedSet (FEMMergeableCollection)
  37. - (NSOrderedSet *)collectionByMergingObjects:(NSOrderedSet *)orderedSet {
  38. [self unionOrderedSet:orderedSet];
  39. return self;
  40. }
  41. @end