循环遍历字典数组以查找值

Hur*_*rkS 4 objective-c nsdictionary nsstring nsarray ios

我有一个字典数组,我想通过找到一个匹配的值,然后我可以Count ==数组的第N项

数组的每个项目都是这样的

HMOD = 0;
MID = 39;
MOD = SOMETHING; // looking for this value
ID = 50;
Run Code Online (Sandbox Code Playgroud)

所以我想创建一个遍历数组的循环,直到找到匹配的值,然后我使用count中的数字作为下一个视图中Index索引的引用.

我已经编写了这个代码的代码,但是希望它可以让你了解我想要创建的循环.

int count = 0;
while (singleName != [[ModArray valueForKey:@"MOD"] objectAtIndex:count]) {
                    count ++;
                    NSLog(@"%i", count);
                }
Run Code Online (Sandbox Code Playgroud)

SingleName是一个NSString,我用来匹配ModArray中的MOD值...任何帮助将不胜感激.

iDe*_*Dev 10

通过valueForKey在字典数组上使用,这是一个更简单的解决方案,

假设你modArray是这样的,

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];
Run Code Online (Sandbox Code Playgroud)

并且singleName具有价值"something"

    NSString *singleName = @"something";
Run Code Online (Sandbox Code Playgroud)

array从中获取modArray带有键的对象"MOD",

    NSArray *array = [modArray valueForKey:@"MOD"];
Run Code Online (Sandbox Code Playgroud)

检查是否singleName存在array.如果是,则获取该对象的第一个索引,该索引与带有键" MOD" 的字典索引相同modArray.

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

更新: 如果你想以自己的方式做到这一点,那么只有你正在使用的错误,!=而你应该使用isEqualToString.你应该这样做,

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