githubを眺めていたら面白そうなプロダクトを見つけたので紹介します。
NSArrayやNSDictionaryにカテゴリを使って、ruby風のシンタックスシュガーを使えるようにしています。 Objective-C と RubyMotion の中間のような感じです。
https://github.com/mneorr/ObjectiveSugar
私が気に入ったのは、これ。 NSArrayのカテゴリです。
- (id)detect:(BOOL (^)(id object))block { for (id object in self) { if (block(object)) return object; } return nil; }
例えば、以下のようなクラスの集まりのNSArrayに対して、
@interface Coffee @property (strong) NSUInteger identifier; @property (strong) NSString* name; @end Coffee* coffee = [coffees detect:^BOOL(id aCoffee) { return ( [aCoffer.name isEqualToString:@"CafeMoca"]); }];
このように使えば、nameが@"CafeMoca"のインスタンスが見つかったときに、そのインスタンスを返し、 見つからなかったときはnilを返すという使い方ができます。
仕事で使うと嫌がられるかも知れませんが、プライベートなプロジェクトでは使ってみようかと思います。