2010-06-17 12 views

Trả lời

6

Tôi nghĩ rằng những gì bạn muốn là một cái gì đó như thế này:

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

Taken từ here.

+0

trông giống như "biểu mẫu bình thường" của liệt kê nhanh. cùng một điều bằng cách sử dụng một mảng trả về một đối tượng thực tế. Vì vậy, điều này thực sự thực sự trở lại chỉ là chìa khóa, sau đó có thể được sử dụng để truy cập vào giá trị? có ý nghĩa. – dontWatchMyProfile

1
for (id key in mydictionary) { 
    id mything = [mydictionary objectForKey:key]; 
} 
0

keyEnumerator trả về một đối tượng cho phép bạn lặp qua từng phím trong từ điển. Từ here

6

Đây cũng là lựa chọn tốt nếu bạn thích chặn.

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 

}] 
+3

+1 Đây có thể là * nhiều * nhanh hơn so với biến thể "fastEnumeration" (vì nó có thể sử dụng 'CFDictionaryApplyFunction' của Core Foundation). Nó tiết kiệm tra cứu tốn kém cho mỗi phần tử bởi vì nó có thể đơn giản lặp qua các thùng và truyền cả khóa và giá trị. –

0

Theo hiểu biết của tôi, đồng thời khi bạn hỏi những câu hỏi, chỉ có một cách để vượt qua khóa và giá trị cùng một lúc: CFDictionaryApplyFunction.

Sử dụng chức năng Nền tảng lõi này liên quan đến một con trỏ hàm G xấu xí cho phần thân của vòng lặp và rất nhiều phép đúc không phải là xấu xí, nhưng không có cầu nối.

@zekel có modern way of iterating từ điển. Bình chọn anh ấy!

+0

Nhân tiện, 'enumerateKeysAndObjectsUsingBlock:' được giới thiệu trong iOS 4, vì vậy bốn ngày sau khi bạn hỏi câu hỏi này :) –

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