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
デフォルトでを呼び出すobejctのメソッドの結果が出力されます-description
。残念ながら、NSDictionary
これをオーバーライドして、通常は気にしない大量の内部データを生成するため、この特定のケースでは、craigbのソリューションの方が優れています。
表示されるキーと値もを使用する-description
ため、コレクションやその他の場所にあるオブジェクトに関する有用な情報が必要な場合-description
は、オーバーライドする必要があります。私は通常、デフォルトのNSObject
実装の形式に一致するように、これらの行に沿って実装します。
-(NSString *)説明 {{ return [NSString stringWithFormat:@ "<%@%p> {foo:%@}"、[self class]、self、[self foo]]; }
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