从Objective-C中的Associative Array获取indexOfObject

时间:2013-05-14 08:09:49

标签: ios objective-c

我在查找数组的索引时遇到问题。 我的数组看起来像这样:

{"[NAME][NAME]", NSArray, NSArray}

我必须获取对象的索引,其中字符串等于此关联数组的第一个元素。

我尝试过使用for循环,并计算整数,但每次都不起作用:/

编辑: 这是我用来查找索引的部分:

int tempIndex = -1, indexCount = 0;

for(NSArray *tempName in ABMembers){
    if([tempName[0] isEqualToString:memberName]){
        tempIndex = indexCount;
        break;
    } else {
        indexCount ++;
    }
}

编辑2: 很抱歉,我刚刚发现我的问题是什么..数组是动态生成的,字符串也必须要比较,字符串不相同。那就是问题所在。所以在这里使用任何代码应该工作。对不起

3 个答案:

答案 0 :(得分:0)

像这样更改你的数组,

NSArray *array1 = @[@"Name 3",@"Name 4",@"Name 5",@"Name 6",@"Name 7"];
NSArray *array2 = @[@"Name 8",@"Name 9",@"Name 10",@"Name 11",@"Name 12"];


NSMutableArray *abMembers = [[NSMutableArray alloc] init];
[abMembers addObject:@"Name 1"];
[abMembers addObject:@"Name 2"];
[abMembers addObjectsFromArray:array1];
[abMembers addObjectsFromArray:array2];

在adMembers数组中搜索名称

NSString *nameToCheck = @"Name 5";
int foundIndex = -1;
for(NSString *s in abMembers){
    if([s isEqualToString:nameToCheck]){
       foundIndex = [abMembers indexOfObject:s];
        break;
    }
}

NSLog(@"found: %d", foundIndex);

答案 1 :(得分:0)

我猜你正在寻找类似的东西......

NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"Two", nil];
NSArray *arr2 = [NSArray arrayWithObjects:@"Three", @"Four", nil];

NSArray *arr = [NSArray arrayWithObjects:@"[NAME][NAME]",arr1, arr2, nil];

// A loop Through array
for(id Obj in arr)
{
    NSLog(@"Object %@ at %d",Obj,[arr indexOfObject:Obj]);
}

如果你知道对象

// Direct index for object
NSLog(@"Index of Arr1 %d",[arr indexOfObject:arr1]);
NSLog(@"Index of String %d",[arr indexOfObject:@"[NAME][NAME]"]);    

答案 2 :(得分:0)

检查一下,我认为这会对你有所帮助:

for (int i = 0; i < [ABMembers count]; i++){
        if ([[ABMembers objectAtIndex:i] isKindOfClass:[NSString class]]){
            //compare the strings you want
        }
        else if ([[ABMembers objectAtIndex:i] isKindOfClass:[NSArray class]]){
            //you can do the the stuff with the arrays in your ABMembers array
        }
 }