1. ホーム
  2. ios

[解決済み] Objective-CでNULL文字列をチェックする正しい方法は何ですか?

2022-04-14 05:58:59

質問

iPhoneアプリで使っていたものです

if (title == nil) {
    // do something
}

が、例外が発生し、コンソールにタイトルが "(null)" と表示されます。

だから、今はこれを使っているんだ。

if (title == nil || [title isKindOfClass:[NSNull class]]) {
    //do something
}

文字列がNULLかどうかを判断する方法として、どのような違いがあり、どのような方法があるのでしょうか。

どのように解決するのですか?

他の人が指摘しているように、Cocoa/Objective C では "null" の種類がたくさんあります。しかし、さらに注意すべき点は、[NSNull null] はシングルトンであるとドキュメントされているので、ポインタの等価性をチェックすればよいので [title isKindOfClass:[NSNull class]] は無意味に複雑だということです。参照 Cocoaのためのトピックス:Nullの使用 .

ですから、良いテストは次のようなものでしょう。

if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";

title が nil であっても title.length は 0/nil/false、つまりこの場合は 0 を返すので、特殊なケースを使う必要がないことに注意してください。 これは、Objective Cを初めて使う人が慣れるのに苦労する点で、特にnilへのメッセージやメソッド呼び出しがクラッシュする他の言語から来た人はそうです。