ฉันจะวนซ้ำวัตถุทั้งหมดใน NSMutableDictionary โดยไม่คำนึงถึงคีย์ได้อย่างไร
ฉันจะวนซ้ำวัตถุทั้งหมดใน NSMutableDictionary โดยไม่คำนึงถึงคีย์ได้อย่างไร
คำตอบ:
วิธีมาตรฐานจะมีลักษณะเช่นนี้
for(id key in myDict) {
id value = [myDict objectForKey:key];
[value doStuff];
}
id key in myDict.allKeys
) มากกว่าพจนานุกรม วิธีนี้ช่วยให้คุณสามารถเปลี่ยนพจนานุกรมได้ซึ่งอาจเป็นสิ่งที่คุณต้องการทำ
คุณสามารถใช้ได้
[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
หากระบบปฏิบัติการเป้าหมายของคุณรองรับการบล็อก
คุณสามารถใช้[dict allValues]
เพื่อรับค่าNSArray
ของคุณ โปรดทราบว่าไม่รับประกันการสั่งซื้อระหว่างการโทร
ในการแจงนับอย่างรวดเร็ว
for(id key in myDictionary) {
id value = [myDictionary objectForKey:key];
// do something with key and obj
}
ในบล็อก:
[myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
คุณไม่จำเป็นต้องกำหนดค่าให้กับตัวแปร คุณสามารถเข้าถึงได้โดยตรงด้วยmyDict[key]
.
for(id key in myDict) {
NSLog(@"Key:%@ Value:%@", key, myDict[key]);
}
อีกวิธีหนึ่งคือการใช้ Dicts Enumerator นี่คือตัวอย่างโค้ดบางส่วนจาก Apple:
NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;
while ((value = [enumerator nextObject])) {
/* code that acts on the dictionary’s values */
}
for (id key, value in myDict)
นั่นก็จะสมบูรณ์แบบ