2013-08-06 143 views
-8

的索引值我有像循环如下:获取每个for循环

for(NSMutableDictionary *dict in arr_thisWeek){ 

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

如何获得索引值?

谢谢

回答

0
NSInteger index = 0; 

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

    index++; 
} 

但是你已经有一个索引处的项目,所以你不应该需要它的阵列迭代。

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); 
}]; 
0

如果你想索引:

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

不正确..&得到警告 – user2526811

0

我个人比较喜欢:

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

的几个注意事项在此块枚举语法:

  • 你不”你需要记住如何写它。只需输入[arr_thisWeek enum...,你就可以在自动完成框中找到它(假设Xcode IDE或类似的)。

  • 如果你知道的,例如,该对象是NSMutableDictionaries,你想访问他们的方法,改变id objNSMutableDictionary* obj

  • 我建议将变量名obj更改为更清晰。

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

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