我有一个简单的问题,如何从某个索引开始循环遍历NSMutable数组。 例如,我有这些双循环,我希望k从与l相同的索引开始。
for (Line *l in L)
{
for (Line *k in L)
{
............
}
}
进一步说明,假设L有10个对象,所以l从0-10开始,k从0-10开始。我想要的是如果l等于1 k应该从1-10开始而不是0-10并且当l等于2 k时应该从2到10而不是0开始。任何帮助都是赞赏的
答案 0 :(得分:1)
Objective-C是C的扩展,查找C for
循环,您将获得答案。 HTH
<强>附录强>
我打算让你从自己查找C for
的学习经验中受益,但在撰写所有其他答案时,由于添加了代码,但它不完整,所以这里是什么您需要按照您希望的顺序生成l
和k
值:
for(NSInteger lIndex = 0; lIndex < L.count; lIndex++)
{
Line *l = L[lIndex]; // index into your array to get the element
for(NSInteger kIndex = lIndex; kIndex < L.count; kIndex++)
{
Line *k = L[kIndex];
// process your l and k
}
}
正如您所看到的,for
有三个子部分,分别是初始化,条件和增量。首先执行初始化,然后执行条件以确定是否执行for
正文,并且在增量之后执行增量在测试条件之前的正文中的语句,以确定是否应该执行另一次迭代。 for
循环与while
循环大致相同(这里有一些不重要的区别):
initialisation;
while(condition)
{
body statements;
increment;
}
答案 1 :(得分:0)
您必须使用索引(普通)for
循环而不是快速枚举(for-in
):
int l;
for (l=startValue; l<=endValue; l++)
{
int i;
for (int i=l; i<=endValue; i++)
{
…
}
}
答案 2 :(得分:0)
您只需修改for-statement。
NSInteger indexYouNeed;
NSInteger iterationCount;
for (int i = indexYouNeed; i < iterationCount; i++) {
/* Your code here */
}
您可能会发现this link有用。