Objective-Cのイケペロな場合分けの省略コード

公開: 2014-06-28 02:05
更新: 2016-04-29 06:02
iPhoneアプリ開発者のみなさまこんにちは。ニートです。仕事ください。
Objective-Cでよく出てくる場合分けを今日は出来る奴っぽく省略してみます。

Xcodeは5.1.1です。




1.配列の中身をnilかどうか判定

まずは配列の中身が入っていればそれを代入、nilだったら@""を入れたい。

なんて場合です。
APIからデータを受け取ったあとにぴゃーするときに使いそうですね。

長く書くとこんな感じ。dictはNSDictionaryです。
NSString *text;
if(dict[@"text"]) {
        text = dict[@"text"];
} else {
        text = @"";
}
これを省略するとこうなります。
NSString *text = dict[@"text"]?:@"";
シンプル。
nil判定しているやつを入れる場合は「?」の後ろを省略できちゃいます。




2.最大値と最小値をはみ出さないようにする

0より小さかったら0に、320より大きかったら320にしたい。

なんて場合。
UIScrollView周りで多々出現しそうな判定です。

冗長に書くとこんな感じ。
float x = scrollView.contentOffset.x;
if(x < 0) {
        x = 0;
} else if(x > 320) {
        x = 320;
}
では省略してみます。えいっ
float x = MIN(MAX(0, scrollView.contentOffset.x), 320);
1行で済んじゃう。

xをmin〜maxの範囲に絞る = MIN(MAX(min, x), max)
と、覚えるとよさげ。

これをMin-Max挟み込み代入と言います(今考えた)。
ただelseしないっぽいので、0.0001秒を争うスピードマスターは控えた方がいいかも。




とりあえず以上の2つです。
おおっ!と思った方は今日から使ってみてください。あと1000円ください。

ではでは。


この記事をシェア
この記事にコメントする
書き込む
あっきぃ(@appstars_aki)
Web、iOSなフリーランサーです。好きなものはお寿司です。でもお寿司は高いので普段は雑草とか拾ったドングリを食べています。お仕事や意味もなく毎月お小遣いをくれる人を探してます。

お仕事の依頼や自分で作ったアプリのレビューを希望しちゃう方はaki@appstars.jpまでご連絡ください。