XcodeデバッガーでNSDictionary変数の内容を表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/112796

質問

Xcode デバッガーを通じて NSDictionary 変数のキーと値のペアを表示する方法はありますか?変数ウィンドウで完全に展開されたときの情報の範囲は次のとおりです。

Variable  Value      Summary
jsonDict  0x45c540   4 key/value pairs
 NSObject {...}
  isa     0xa06e0720

(配列変数と同様に) 辞書の各要素が表示されることを期待していました。

役に立ちましたか?

解決

gdb ウィンドウで使用できるのは、 po オブジェクトを検査します。

与えられた:

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];

オブジェクトの追加後にブレークポイントを設定すると、辞書の内容を検査できます

(gdb) po dict
{
  bar = foo;
  buz = fiz;
}

もちろんこれらは NSString きれいに印刷されるオブジェクト。YMMV と他の複雑なオブジェクト。

他のヒント

任意のオブジェクト (ObjC または Core Foundation) 変数を右クリックし、[説明をコンソールに出力] を選択します ([実行] -> [変数ビュー] でも)。これにより、オブジェクトの結果が出力されます。 -debugDescription デフォルトで呼び出されるメソッド -description. 。残念ながら、 NSDictionary これをオーバーライドして、通常は気にしない大量の内部データを生成するため、この特定のケースでは craigb のソリューションの方が優れています。

表示されるキーと値も使用します -description, したがって、コレクションやその他の場所のオブジェクトに関する有用な情報が必要な場合は、オーバーライドします -description は必須です。通常、デフォルトの形式に一致させるために、次の方針に沿って実装します。 NSObject 実装:

-(NSString *) description
{
    return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self class], self, [self foo]];
}

CFShow() を使用できます

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);

出力には次のように表示されます

{
  bar = foo;
  buz = fiz;
}

XCode 4.6 には、役に立つ次の機能が追加されました。

The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger

コンソールでオブジェクト全体を印刷しなくても、これらのオブジェクト タイプを検査できるようになりました。楽しむ!

ソース: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_6.html

辞書をクリックしてから、小さな「i」アイコンをクリックすると、仕事ができるはずです :-)Xcode5, view the value of a dict

も使用できます NSLog.

また、デバッグエリアまたはxcodeに移動して、調べることもできます All Variables, Registers, Globals and Statics 次に変数を選択します。それを右クリックします。次に選択します Print description of "...."

それが役に立てば幸い!

これらを最新の XCode のブレークポイント アクションで出力したい場合 (はい、私は元の投稿から 10 年後です!)、「ログ メッセージ」アクションで次のブレークポイント式を使用します。

@myDictionary.description@

以下はブレークポイント アクションのスクリーンショットです。ここで、変数イベントは NSString で、変数 contextData は内容をログに記録している NSDictionary です。:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top