Objective c 在具有特定键值对的ArrayOfDictionary中查找字典

Objective c 在具有特定键值对的ArrayOfDictionary中查找字典,objective-c,dictionary,nsarray,nsdictionary,Objective C,Dictionary,Nsarray,Nsdictionary,我有一系列字典 for(int i = 0; i < 5; i++) { NSMutableDictionary *_myDictionary = [NSMutableDictionary dictionary]; [_myDictionary setObject:[NSString stringWithFormat:@"%d",i] forKey:@"id"]; [_myDictionary setObject:label.text @"Name"];

我有一系列字典

for(int i = 0; i < 5; i++) {
    NSMutableDictionary *_myDictionary = [NSMutableDictionary dictionary];

    [_myDictionary setObject:[NSString stringWithFormat:@"%d",i] forKey:@"id"];
    [_myDictionary setObject:label.text @"Name"];
    [_myDictionary setObject:label1.text @"Contact"];
    [_myDictionary setObject:label2.text @"Gender"];
}

[_myArray addObject:_myDictionary];
int index = [_myArray count];

for(int i = 0; i < 5; i++)
{

NSMutableDictionary *_myDictionary = [NSMutableDictionary dictionaryWithDictionary:[_myArray objectAtIndex:i]];

if([[_myDictionary objectForKey:@"id"] isEqualToString:id])
{

index = i;

return;

}

}

if(index != [_myArray count])
    NSLog(@"index found - %i",index);

else
    NSLog(@"index not found");
for(int i=0;i<5;i++){
NSMutableDictionary*_myDictionary=[NSMutableDictionary];
[_MyDictionarySetObject:[NSString stringWithFormat:@“%d”,i]forKey:@“id”];
[_MyDictionarysetObject:label.text@“Name”];
[_myDictionarysetObject:label1.text@“Contact”];
[_mydictionarysetobject:label2.text@“性别”];
}
[\u myArray addObject:\u myDictionary];
现在我想从objectForKey:@“id”为1或2的数组中选择一个字典,或者从id=2的表中选择sql查询Select*。 我知道这个过程

for(int i = 0; i < 5; i++) {
    NSMutableDictionary *_myDictionary = [NSMutableDictionary dictionary];

    [_myDictionary setObject:[NSString stringWithFormat:@"%d",i] forKey:@"id"];
    [_myDictionary setObject:label.text @"Name"];
    [_myDictionary setObject:label1.text @"Contact"];
    [_myDictionary setObject:label2.text @"Gender"];
}

[_myArray addObject:_myDictionary];
int index = [_myArray count];

for(int i = 0; i < 5; i++)
{

NSMutableDictionary *_myDictionary = [NSMutableDictionary dictionaryWithDictionary:[_myArray objectAtIndex:i]];

if([[_myDictionary objectForKey:@"id"] isEqualToString:id])
{

index = i;

return;

}

}

if(index != [_myArray count])
    NSLog(@"index found - %i",index);

else
    NSLog(@"index not found");
int index=[[u myArray count];
对于(int i=0;i<5;i++)
{
NSMutableDictionary*\u myDictionary=[NSMutableDictionary Dictionary WithDictionary:[\u myArray objectAtIndex:i]];
if([[u myDictionary objectForKey:@“id”]IsequalString:id])
{
指数=i;
返回;
}
}
如果(索引!=[[u myArray count])
NSLog(@“找到索引-%i”,索引);
其他的
NSLog(@“未找到索引”);
任何帮助都将不胜感激。
提前感谢

您应该使用
[NSNumber numberWithInteger:i]
而不是NSString

此搜索的代码应如下所示:

NSString *valueToFind = [NSString stringWithFormat:@"%d", intValue]; // [NSNumber numberWithInteger: intValue] 
NSInteger index = [_myArray indexOfObjectPassingTest:^BOOL(NSDictionary *obj, NSUInteger idx, BOOL *stop) {
    return [valueToFind isEqualToString: [obj objectForKey: @"id"]];
}];
NSDitionary *found = [_myArray objectAtIndex: index];

试试这个,这是通过使用快速枚举实现的

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    for(dict in _myArray)
    {

        if([[dict valueForKey:@"id"] isEqualToString:@"1"])
        {
            return;
        }
    }

您的实际问题是什么?您应该使用[NSNumber numberWithInteger:i]而不是NSString。将基本类型放入数组和字典的正确方法是使用
NSNumber
,转换为
NSString
可能会有问题(这取决于您在做什么)。这确实很快,但如果数组id太长,包含100个键的字典,则需要花费大量时间。没有任何sql类型的查询用于此。这不会花费太多时间,您可以添加100个对象&请看,仅出于测试目的,这是一个快速的过程。