2011-08-19 85 views
39

我正在处理深层嵌套的NSArray和NSDictionary的,这是非常耗时的说至少。 [data objectatindex:0] valueForKey:@“blah”]等等美化NSArray和NSDictionary的NSLog

有谁知道一个不错的iOS类别递归记录结构,突出显示类型和显示值?

可能会问一点,但你永远不知道:)

+0

的方式的Plist类似的显示在XCode的?这是要显示在设备上还是仅供您使用? –

回答

43

也许这样吗?

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

,但我想不出让输出漂亮的副本除外的&任何很好的方式,将其粘贴到jsonFormatter(例如)

编辑:@Andrey Starodubtsev具有的XCode解决方案>低于5.x的:

NSLog(@"%@", dictionaryYouWantToPrint); 
+0

小心描述(如何将对象传递给具有'%@'说明符的'NSLog()')? – Droppy

+0

@你说的是这个问题? http://stackoverflow.com/questions/2634099/basic-objective-c-syntax – Gotschi

1

也许你可以的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); 
}]; 
122

嗯。下面的结果对我来说简单

NSLog(@"%@", dictionaryYouWantToPrint); 

输出:

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

想知道这个答案没有所有的投票... – memmons

+0

这一个是两年后写的,而这个答案是完全正确的,用户接受了我的,也许他们改变了Xcode如何打印字典。我应该删除它吗? idk – Gotschi

+0

@Gotschi你可以编辑它并更新回答 –

1

这将在控制台打印照片,无需NSLog的。

在调试过程中,当你的断点是你的字典下面,你可以键入控制台

NSDictionary * myDict = ...; 

PO myDict

,您将得到印刷字典控制台。

你甚至可以投对象复制到其他类型的控制台:

enter image description here