loop through array of dictionaries to find a value

ios, nsarray, nsdictionary, nsstring, objective-c

Solution

Here is a simpler solution by using `valueForKey` on the array of dictionaries,

Assuming that your `modArray` is like this,

NSArray *modArray = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObject:@"0" forKey:@"HMOD"],
                       [NSDictionary dictionaryWithObject:@"39" forKey:@"MID"],
                       [NSDictionary dictionaryWithObject:@"something" forKey:@"MOD"],
                       [NSDictionary dictionaryWithObject:@"50" forKey:@"ID"], nil];

And `singleName` has a value as `"something"`

    NSString *singleName = @"something";

Fetch the `array` from `modArray` which has an object with key as `"MOD"`,

    NSArray *array = [modArray valueForKey:@"MOD"];

Check if `singleName` is present in this `array`. If yes, then get the first index of that object which will be same as the index of dictionary with key "`MOD`" in `modArray`.

    if ([array containsObject:singleName]) {
        NSLog(@"%d", [array indexOfObject:singleName]);
    } else {
        NSLog(@"%@ is not present in the array", singleName);
    }

Update: If you want to do it in your way, only mistake was you were using `!=` whereas you should have used `isEqualToString`. You should have done like this,

int count = 0;
while (![singleName isEqualToString:[[modArray valueForKey:@"MOD"] objectAtIndex:count]]) {
                    count ++;
                    NSLog(@"%i", count);
                }

Problem

I have an array of dictionaries that I would like to go through to find a matching value that I can then Count == Nth item of the array Each item of the array looks like this ``` HMOD = 0; MID = 39; MOD = SOMETHING; // looking for this value ID = 50; ``` So I would like to create a loop that goes through the array until it finds the matching value, then I use the number in the count as an reference to Index path in the next view.. I have written this peice of code which dosnt work... but hopefully it gives you an idea of the loop I am trying to create. ``` int count = 0; while (singleName != [[ModArray valueForKey:@"MOD"] objectAtIndex:count]) { count ++; NSLog(@"%i", count); } ``` SingleName is a NSString that I am using to match the MOD value in ModArray... Any help would be greatly appreciated.

Original source