if文のもっと短い書き方を教えて頂きたいです

投稿者: Anonymous

初心者で質問の内容が足りないかもしれません。
if文において、変数等を使って以下のコードをもう少し短く書く方法は御座いますでしょうか?
ご教授のほど宜しくお願い致します。

内容としましては、別クラスから呼び出したメソッドのTitleが「空っぽ」&「nil」でない場合のif文です。宜しくお願い致します。

if (![[Data ValueWithKey:InformationTitle] isEqual:@""] &&
    ![[Data ValueWithKey:InformationTitle] isEqual:nil]) {}

解決

こんな感じでしょうか?

emptyString = [Data ValueWithKey:InformationTitle];
if ((emptyString != nil) && (emptyString.length == 0))
{
    // do something
} //end if value is ""

もっと短く書くなら

emptyString = [Data ValueWithKey:InformationTitle];
if (!emptyString && (emptyString.length == 0))
{
    // do something
} //end if value is ""

という書き方も出来ると思います。

余談ですが、

  • クラス名は大文字から
  • 変数名は小文字から

書き始めるのが良いと思いますので、Dataという変数名は避けた方がいいと思います。

追記
質問のコメントを拝見して、回答の趣旨が間違っていることに気がつきました。
上のコードはタイトルが「空っぽ」かつ「nilでない」事を判別するコードになります。
「空っぽ」でも「nil」でもない事を判別するためには以下のコードになります。

emptyString = [Data ValueWithKey:InformationTitle];
if ((emptyString != nil) && (emptyString.length > 0))
{
    // do something
} //end if value is not empty

再追記
if文の中に入ってくれないという事で、デバッグ用に冗長化したコードを記述してみます。
以下をステップ実行して、BOOL型の2つの変数にそれぞれYES(true)が代入されるかを確認してみてください。

NSString *title = [Data ValueWithKey:InformationTitle];
BOOL isNotNil = title ? YES : NO;
BOOL isNotEmpty = (title.length > 0) ? YES : NO;
if (isNotNil && isNotEmpty)
{
     // do something
} // end if title is there
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *