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)変数を右クリックして、「コンソールに説明を印刷」(「実行」->「変数ビュー」でも)を選択できます。これにより、結果がobejctの-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
これで、コンソールでオブジェクト全体を印刷することなく、これらのオブジェクトタイプを検査できます。楽しい!
あなたの辞書をクリックして、小さな「i」アイコンをクリックしてください、それは仕事をするはずです:-)
NSLog を使用することもできます。
また、デバッグ領域またはxcodeに移動して、All Variables, Registers, Globals and Statics
その後、変数を選択します。それを右クリックします。次に、Print description of "...."
それが役に立てば幸い!