2011-08-19 25 views
39

Tôi đang đối phó với các thuật ngữ của NSArray và NSDictionary lồng nhau và rất tốn thời gian để nói ít nhất. [dữ liệu objectatindex: 0] valueForKey: @ "blah"] v.v.Làm đẹp NSLog của NSArray & NSDictionary

Có ai biết một thể loại iOS đẹp để đệ quy đăng nhập cấu trúc, đánh dấu loại và hiển thị các giá trị không?

Có thể hỏi một chút nhưng bạn không bao giờ biết :)

+0

Tương tự như cách các plists được hiển thị trong XCode? Cái này có được hiển thị trên thiết bị hay chỉ để bạn sử dụng? –

Trả lời

43

Có thể như thế này?

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

nhưng tôi không thể nghĩ ra cách nào tốt đẹp của nhận được đầu ra đẹp ngoại trừ bản sao & dán nó vào một jsonFormatter (ví dụ)

EDIT: @Andrey Starodubtsev có giải pháp cho XCode > 5.x dưới đây:

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

Chăm sóc để mô tả cách thức đó (truyền đối tượng đến 'NSLog()' với '% @' specifier) ​​hoạt động? – Droppy

+0

@Droppy bạn có nghĩa là câu hỏi này? http://stackoverflow.com/questions/2634099/basic-objective-c-syntax – Gotschi

1

lẽ bạn có thể sử dụng khối sau khi iOS5, như

[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

Hmm. Đơn giản

NSLog(@"%@", dictionaryYouWantToPrint); 

đầu ra sau kết quả cho tôi:

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

Tự hỏi làm thế nào câu trả lời này không có tất cả các phiếu bầu ... – memmons

+0

điều này được viết hai năm sau, trong khi câu trả lời này là hoàn toàn chính xác, người dùng chấp nhận tôi và có thể họ đã thay đổi cách từ điển được in bằng xcode. tôi có nên xóa nó không? idk – Gotschi

+0

@Gotschi bạn có thể chỉnh sửa và cập nhật câu trả lời –

1

này sẽ in trong giao diện điều khiển mà không cần NSLog.

Trong gỡ lỗi, khi breakpoint của bạn dưới từ điển của bạn, bạn có thể gõ vào console

NSDictionary * myDict = ...; 

po myDict

và bạn sẽ nhận được in từ điển trong giao diện điều khiển.

Bạn thậm chí có thể bỏ đối tượng với các loại khác trong giao diện điều khiển:

enter image description here

Các vấn đề liên quan