2014年6月11日水曜日

ObjectiveSugarがクール過ぎて、もう二度と普通にObjective-Cが書けない


>もう二度と普通にObjective-Cが書けない
そういや最近はswiftってやつがあるらしいね!!!!

…どうも@miyahira_goです。

Objective-C使い始めてはや5年くらいになるんだけど、
あまり気にいらないことに、毎度毎度文字数が多くなってしまうって特徴がある。
XCodeの補完があるし、NSArrayとかNSDictionaryのsyntaxが追加された時にかなり良くなったものの、
やっぱnodejsとかruby(ほとんど触らないけど)とか他のLL触るときに
「あー、Objectice−Cでもこうかければなー」と思うわけでありますよ。

そこで今回ご紹介するのが、この「ObjectiveSugar」!
Rubyスタイルで拡張されたNSNumberやNSArrayで、ループを書くのも超楽々。

続きは以下から。



ざっくり説明

すると、ObjectiveSugar
  • NSNumber
  • NSString
  • NSArray、NSMutableArray
  • NSDictionary
  • NSSet
のクラスらに、Categoryで便利な関数たちを追加してあるライブラリ。
CocoaPods を使うと、さくっと簡単に自分のプロジェクトに追加できるけど、それはまた今度。

NSNumberの便利関数

times関数。ループするだけなんだけど、for(NSInteger i = 0 ; i<10 ; i++)って書かなくてもいいのは、心に優しい。
        [@5 times:^{
            NSLog(@"Hello!");
        }];
        // Hello!
        // Hello!
        // Hello!
        // Hello!
        // Hello!

timesWithIndex関数。名前の通りindexつきでかつ、心に優しい。
        [@5 timesWithIndex:^(NSUInteger index){
            NSLog(@"%d回目のHello", (int)index);
        }];
        // 0回目のHello
        // 1回目のHello
        // 2回目のHello
        // 3回目のHello
        // 4回目のHello

なにげに便利なのが、NSNumberの秒関係関数。
秒に変換するので、seconds関数はそのままだけど、
 @(15).seconds;
// 15

minutesとか
@(10).minutes
// 600

hoursとか
@(1).hours
// 3600

fromNowで未来の時間を出したり
@(7).days.fromNow;
// 2014-06-17 14:56:11 +0000

agoで過去の時間計算したり
@(1).month.ago;
// 2014-05-11 14:56:11 +0000

NSStringの便利関数

NSStringとかNSArrayとかNSSetの便利なやついろいろあるんだけど、そろそろ飽きたんで残りはgithubのトップからでも見てみてください。 。。
supermarin/ObjectiveSugar