0

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

{"[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: 对不起,伙计们,我刚刚发现我的问题是什么.. 数组是动态生成的,并且必须比较的字符串,以及不一样的字符串。这就是问题所在。所以在这里使用任何代码都应该有效。再次抱歉

4

3 回答 3

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);
于 2013-05-14T08:27:54.613 回答
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]"]);    
于 2013-05-14T09:21:59.480 回答
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
        }
 }
于 2013-05-14T10:02:46.823 回答