質問: 初心者で質問の内容が足りないかもしれません。 `if`文において、変数等を使って以下のコードをもう少し短く書く方法は御座いますでしょうか? ご教授のほど宜しくお願い致します。 内容としましては、別クラスから呼び出したメソッドのTitleが「空っぽ」&「nil」でない場合のif文です。宜しくお願い致します。 ``` if (![[Data ValueWithKey:InformationTitle] isEqual:@""] && ![[Data ValueWithKey:InformationTitle] isEqual:nil]) {} ```
回答: すでに解決してるのでこれは無視してもらってもいいです。 ``` NSString *title = [Data ValueWithKey:InformationTitle]; if( title.length != 0 ) { // } ``` これでいいです。 解説: Objective-Cでは nilへのメッセージパッシングは0を返します。(例外を除きます) ですので、もしtitleがnilであれば title.length は0を返すので条件は偽となります。 titleがnilでなければ通常の文字列の長さが返ってきますので空文字列以外は真となります。 また、lengthの戻り値の型はNSUIntegerですのでマイナスになることは考慮しなくてよいです。 nilへのメッセージパッシングの戻り値の例外: ざっくりと言うと「レジスタに入りきらない大きさの構造体に類するものを返すメソッドの場合は戻り値が不定となる。」です。 それ以外は必ず0が返ります。 気になること: ``` [Data ValueWithKey:InformationTitle] ``` これが本当にNSStringかチェックしてないけど大丈夫?