[解決済み] 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へのメッセージやメソッド呼び出しがクラッシュする他の言語から来た人はそうです。
関連
-
[解決済み】ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み】iOSのinfo.plistファイル内の文字列をローカライズする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
[解決済み] UITableViewの下にある余分なセパレータをなくす
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] UIViewに角丸をつける
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] UITableView - トップにスクロールする