获取每个for循环的索引值

时间:2013-08-06 11:52:12

标签: iphone ios objective-c loops for-loop

我的for循环如下:

for(NSMutableDictionary *dict in arr_thisWeek){

     NSLog("%d",[arr_thisWeek objectATIndex:?????);
  }

如何获取索引值??

谢谢,

4 个答案:

答案 0 :(得分:0)

NSInteger index = 0;

for(NSMutableDictionary *dict in arr_thisWeek){
    NSLog("%d",[arr_thisWeek objectATIndex:index);

    index++;
}

但是你已经拥有该索引处的项目,所以你不需要它来进行数组迭代。

答案 1 :(得分:0)

NSMutableArray *arr_thisWeek=[[NSMutableArray alloc]initWithObjects:@"value1",@"value2",@"value3",@"value4", nil];
[arr_thisWeek enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
               NSLog(@"index: %d  , Value: %@",idx,obj);
}];

答案 2 :(得分:0)

如果你想索引:

for(NSMutableDictionary *dict in arr_thisWeek){
    NSLog("%d",[arr_thisWeek indexOfObject:dict);
}

答案 3 :(得分:0)

我个人更喜欢:

[arr_thisWeek enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSLog(@"Index %i holds object: %@", idx, obj);
}];

关于此块枚举语法的一些注释:

  • 您无需记住如何编写它。只需键入[arr_thisWeek enum...,您就可以在自动完成框中找到它(假设是Xcode IDE或类似的)。

  • 例如,如果您知道对象为NSMutableDictionaries并且您想要访问其方法,请将id obj更改为NSMutableDictionary* obj

  • 我建议将变量名称obj更改为更清晰的内容。

  • 最重要的是:迭代代码一个循环 - 它是一个,它被执行多次。这意味着:

    • 如果您想继续(即退出当前的迭代并继续下一个),您需要执行:return;。这将退出块,而对块的进一步调用(进一步的迭代)将继续正常进行。
    • 如果您想中断(即立即停止循环),您需要执行:*stop = YES;。这导致不再执行其他块。请注意,这不会退出当前块。因此,为了获得正常的“回归行为”,请执行:*stop = YES; return;