web-dev-qa-db-ja.com

NSArrayおよびNSDictionaryのNSLogを美しくする

深くネストされたNSArrayとNSDictionaryを扱っていますが、控えめに言っても非常に時間がかかります。 [data objectatindex:0] valueForKey:@ "blah"]などなど

構造を再帰的に記録し、タイプを強調表示し、値を表示する素敵なiOSカテゴリを知っている人はいますか?

少し尋ねるかもしれませんが、あなたは決して知りません:)

40
iOSDevil

たぶんこんな感じ?

for (id key in dictionary) {
    NSLog(@"key: %@, value: %@ \n", key, [dictionary objectForKey:key]);
}

ただし、出力をコピーして貼り付けて jsonFormatter (たとえば)

[〜#〜] edit [〜#〜]:@Andrey Starodubtsevには、XCode> 5.x以下のソリューションがあります。

NSLog( @"%@", dictionaryYouWantToPrint );
48
Gotschi

うーん。シンプル

NSLog( @"%@", dictionaryYouWantToPrint );

私のために次の結果を出力します:

{
    id = 1;
    matchCount = 0;
    matchPattern = abcdef;
    number = "123456";
    sessionID = 5;
    status = Unknown;
    timerStart = 1367229348;
}
128

たぶん、iOS5の後にブロックを使用できます

[anArray enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) {
    NSLog (@"object->%@",object);
}];

[aDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop){
    NSLog(@"key->%@, value-> %@",key,object);
}];
1
user843910

NSLogなしでコンソールに印刷されます。

デバッグ中に、ブレークポイントが辞書の下にある場合、コンソールに入力できます

NSDictionary * myDict = ...;

po myDict

コンソールに印刷された辞書が表示されます。

コンソールでオブジェクトを別のタイプにキャストすることもできます。

enter image description here

1
Martin Berger