2011-08-19 88 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