85

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

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

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

4

7 に答える 7

140

pogdb ウィンドウで、オブジェクトの検査に使用できます。

与えられた:

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

オブジェクトが追加された後にブレークポイントを設定すると、辞書の内容を調べることができます

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

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

于 2008-09-22T01:51:12.440 に答える
30

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

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

-(NSString *) 説明
{
    return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self クラス], self, [self foo]];
}
于 2008-09-22T09:55:28.720 に答える
6

CFShow() を使用できます

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

出力に表示されます

{
  bar = foo;
  buz = fiz;
}
于 2012-06-14T09:07:48.397 に答える
3

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

于 2013-04-19T22:06:15.173 に答える
1

あなたのdictをクリックしてから、小さな「i」アイコンをクリックしてください。それは仕事をするはずです:-) Xcode5、辞書の値を表示する

于 2013-11-26T04:48:06.087 に答える
0

NSLogも使用できます。

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

それが役に立てば幸い!

于 2012-12-19T13:56:41.453 に答える