Skip to content

Instantly share code, notes, and snippets.

@satoshin2071
Last active December 20, 2015 09:58
Show Gist options
  • Save satoshin2071/6111738 to your computer and use it in GitHub Desktop.
Save satoshin2071/6111738 to your computer and use it in GitHub Desktop.
objective-c blocks Practice
NSArray *before = @[ @"hoge", @"fuga", @"piyo", @1, @2, @3, @"foo", @"bar"];
NSArray *after = [before grep:^BOOL(id obj) {return [obj isKindOfClass:[NSString class]];}];
NSLog(@"%@", after);
#import <Foundation/Foundation.h>
@interface NSArray (grep)
- (NSArray *)grep:(BOOL(^)(id))block;
@end
#import "NSArray+grep.h"
@implementation NSArray (grep)
- (NSArray *)grep:(BOOL(^)(id))block
{
NSMutableArray *newArray = [NSMutableArray array];
[self enumerateObjectsUsingBlock:^(id item,NSUInteger idx,BOOL *stop){
//引数で渡されたblockを実行して戻り値のBOOLを格納
BOOL obj = block(item);
//blockの実行結果が真なら配列に追加
if (obj) {
[newArray addObject:item];
}
}];
return newArray;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment