looping through an NSMutableDictionary

前端 未结 6 1040
野趣味
野趣味 2021-01-30 08:02

How do I loop through all objects in a NSMutableDictionary regardless of the keys?

相关标签:
6条回答
  • 2021-01-30 08:38
    1. For simple loop, fast enumeration is a bit faster than block-based loop
    2. It's easier to do concurrent or reverse enumeration with block-based enumeration than with fast enumeration When looping with NSDictionary you can get key and value in one hit with a block-based enumerator, whereas with fast enumeration you have to use the key to retrieve the value in a separate message send

    in fast enumeration

    for(id key in myDictionary) {
       id value = [myDictionary objectForKey:key];
      // do something with key and obj
    }
    

    in Blocks :

    [myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    
       // do something with key and obj
      }];
    
    0 讨论(0)
  • 2021-01-30 08:39

    Another way is to use the Dicts Enumerator. Here is some sample code from Apple:

    NSEnumerator *enumerator = [myDictionary objectEnumerator];
    id value;
    
    while ((value = [enumerator nextObject])) {
        /* code that acts on the dictionary’s values */
    }
    
    0 讨论(0)
  • 2021-01-30 08:40

    you can use

    [myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
        // do something with key and obj
    }];
    

    if your target OS supports blocks.

    0 讨论(0)
  • 2021-01-30 08:42

    A standard way would look like this

    for(id key in myDict) {
        id value = [myDict objectForKey:key];
        [value doStuff];
    }
    
    0 讨论(0)
  • 2021-01-30 08:47

    You don't need to assign value to a variable. You can access it directly with myDict[key].

        for(id key in myDict) {
            NSLog(@"Key:%@ Value:%@", key, myDict[key]);
        }
    
    0 讨论(0)
  • 2021-01-30 08:48

    You can use [dict allValues] to get an NSArray of your values. Be aware that it doesn't guarantee any order between calls.

    0 讨论(0)
提交回复
热议问题