読者です 読者をやめる 読者になる 読者になる

Pragmatic ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

Objective-Cでnil結合演算子的なことをするには

Swiftだとnil結合演算子として"??"が用意されてますが、 Objective-C(というかC)でも似たようなことができます。

ここ(Conditionals - Using the GNU Compiler Collection (GCC))に書いてあるように3項演算子の真ん中を省略すると、条件式が非0の場合に条件式の値になるので

x ? x : y

x ?: y

は同じになります。(厳密にはxの評価される回数が異なりますが)

なのでObjective-C的にnilだったらデフォルト値をつっこむみたいな処理を書くと

NSString* outputString = (inputString != nil) ? inputString : @"default";

NSString* outputString = inputString ?: @"default";

このように短く書くことができます