[解決済み】Objective-C。NULL、nil、@""の違いは何ですか?
2022-02-22 08:01:36
質問
タイトルの通り、以下の違いは何でしょうか?
NULL
,
nil
と
@""
?
例えば、辞書の中の文字列が空であることを確認したい場合。
どのような条件を使用すればよいですか?
if ([dictionary objectForKey:@"aString"] == nil)
または
if [[dictionary objectForKey:@"aString"] isEqualToString:@""]
または
if ([dictionary objectForKey:@"aString"] == NULL)
どれが正しいの?
解決方法は?
nil
は、NULLのobjective-cオブジェクトに対するアナログです。実は同じなんです。
//MacTypes.h
#define nil NULL
だから
if ([dictionary valueForKey:@"aString"]==nil)
if ([dictionary valueForKey:@"aString"]==NULL)
どちらも特定のキーが辞書に存在するかどうかをチェックしますが、1行目の方が客観的なc型をチェックしているのでより正しいです。
についてです。
if ([[dictionary valueForKey:@"aString"] isEqualToString:@""])
この行は、辞書に "aString" というキーがあるエントリーがあるかどうかをチェックし、そのエントリーと空の文字列を比較します。結果は次のいずれかになります。
- は、そのキーに対応する項目がない場合は false となります。
- は、キーに対応するエントリが存在し、そのエントリが空文字列である場合に true となります。
-
に応答しない場合、クラッシュする可能性があります。
-isEqualToString:
メッセージ
もし、エントリーが存在するかどうかと、それが空文字列でないかのチェックの両方を行う必要がある場合は、2つの条件が必要です。
if ([dictionary valueForKey:@"aString"]==nil ||
[[dictionary valueForKey:@"aString"] isEqualToString:@""])
関連
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptのNullとundefinedのチェックと==と===の違いについて
-
[解決済み] JSONでnullを表現する
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
-
[解決済み】Objective-C ARC: strong vs retainとweak vs assign
-
[解決済み】iOS 7.0とシステム劣化で無効なコンテキスト0x0が表示される
-
[解決済み】ストーリーボードで、複数のコントローラで使用するためのカスタムセルを作成する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] .02fと%.2fの違いは何ですか?
-
[解決済み] ターゲット・パターンに '%' が含まれていません。メイクファイル
-
[解決済み] NSStringにパーセント記号を追加する方法
-
[解決済み] objective-c/cocoaで例外を投げる
-
[解決済み] objectForKeyとvalueForKeyの違い?
-
[解決済み】キーボードを簡単に解除する方法は?
-
[解決済み】ブロック宣言の構文リスト
-
[解決済み】iOS7でステータスバーを隠すことができない。
-
[解決済み】なぜObjective-Cのファイルには.mという拡張子がついているのですか?
-
[解決済み] [Solved] UITableViewがReloadDataを完了したことを伝えるには?