XcodeデバッガーでNSDictionary変数の内容を表示するにはどうすればよいですか?
-
02-07-2019 - |
質問
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
コンソールでオブジェクト全体を印刷しなくても、これらのオブジェクト タイプを検査できるようになりました。楽しむ!
辞書をクリックしてから、小さな「i」アイコンをクリックすると、仕事ができるはずです :-)
も使用できます NSLog.
また、デバッグエリアまたはxcodeに移動して、調べることもできます All Variables, Registers, Globals and Statics
次に変数を選択します。それを右クリックします。次に選択します Print description of "...."
それが役に立てば幸い!