web-dev-qa-db-fra.com

Embellissez NSLog de NSArray & NSDictionary

Je suis confronté à NSArray et NSDictionary profondément imbriqués et cela prend beaucoup de temps pour le moins. [data objectatindex: 0] valueForKey: @ "blah"] etc etc

Quelqu'un connaît-il une catégorie Nice iOS pour enregistrer récursivement la structure, mettre en surbrillance le type et afficher les valeurs?

Peut-être demander un peu trop mais on ne sait jamais :)

40
iOSDevil

Peut-être comme ça?

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

mais je ne peux pas penser à une belle façon de rendre la sortie belle, sauf le copier-coller dans un jsonFormatter (par exemple)

[~ # ~] éditez [~ # ~] : @Andrey Starodubtsev a la solution pour XCode> 5.x ci-dessous:

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

Hmm. Facile

NSLog( @"%@", dictionaryYouWantToPrint );

sorties résultat suivant pour moi:

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

Vous pouvez peut-être utiliser le bloc après iOS5, comme

[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

Cela s'imprimera dans la console sans NSLog.

Pendant le débogage, lorsque votre point d'arrêt est en dessous de votre dictionnaire, vous pouvez taper dans la console

NSDictionary * myDict = ...;

po myDict

et vous obtiendrez un dictionnaire imprimé dans la console.

Vous pouvez même convertir des objets dans un autre type dans la console:

enter image description here

1
Martin Berger