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个对象&请看,仅出于测试目的,这是一个快速的过程。