web-dev-qa-db-ja.com

XcodeデバッガーでNSDictionary変数の内容を表示する方法は?

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

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

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

84
Dara Kong

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と他の複雑なオブジェクト。

138
craigb

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

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

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

CFShow()を使用できます

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

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

{
  bar = foo;
  buz = fiz;
}
6
uranpro

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

3
jkatzer

あなたの辞書をクリックして、小さな「i」アイコンをクリックしてください、それは仕事をするはずです:-) Xcode5, view the value of a dict

1
Taiko

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

@ myDictionary.description @

以下は、ブレークポイントアクションのスクリーンショットです。変数イベントはNSStringであり、変数contextDataは、コンテンツを記録しているNSDictionaryです。

1
Pat

NSLog を使用することもできます。

また、デバッグ領域またはxcodeに移動して、All Variables, Registers, Globals and Staticsその後、変数を選択します。それを右クリックします。次に、Print description of "...."

それが役に立てば幸い!

0
user1873574