| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // NSSet+Lookin.m
- // Lookin
- //
- // Created by Li Kai on 2019/1/13.
- // https://lookin.work
- //
- #import "NSSet+Lookin.h"
- @implementation NSSet (Lookin)
- - (NSSet *)lookin_map:(id (^)(id obj))block {
- if (!block) {
- NSAssert(NO, @"");
- return nil;
- }
-
- NSMutableSet *newSet = [NSMutableSet setWithCapacity:self.count];
- [self enumerateObjectsUsingBlock:^(id _Nonnull obj, BOOL * _Nonnull stop) {
- id newObj = block(obj);
- if (newObj) {
- [newSet addObject:newObj];
- }
- }];
- return [newSet copy];
- }
- - (id)lookin_firstFiltered:(BOOL (^)(id obj))block {
- if (!block) {
- NSAssert(NO, @"");
- return nil;
- }
-
- __block id targetObj = nil;
- [self enumerateObjectsUsingBlock:^(id _Nonnull obj, BOOL * _Nonnull stop) {
- if (block(obj)) {
- targetObj = obj;
- *stop = YES;
- }
- }];
- return targetObj;
- }
- - (NSSet *)lookin_filter:(BOOL (^)(id obj))block {
- if (!block) {
- NSAssert(NO, @"");
- return nil;
- }
-
- NSMutableSet *mSet = [NSMutableSet set];
- [self enumerateObjectsUsingBlock:^(id _Nonnull obj, BOOL * _Nonnull stop) {
- if (block(obj)) {
- [mSet addObject:obj];
- }
- }];
- return [mSet copy];
- }
- - (BOOL)lookin_any:(BOOL (^)(id obj))block {
- if (!block) {
- NSAssert(NO, @"");
- return NO;
- }
- __block BOOL boolValue = NO;
- [self enumerateObjectsUsingBlock:^(id _Nonnull obj, BOOL * _Nonnull stop) {
- if (block(obj)) {
- boolValue = YES;
- *stop = YES;
- }
- }];
- return boolValue;
- }
- @end
|