从某个索引开始循环遍历NSmutatable数组

时间:2017-05-24 06:10:35

标签: objective-c loops nsmutablearray

我有一个简单的问题,如何从某个索引开始循环遍历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开始。任何帮助都是赞赏的

3 个答案:

答案 0 :(得分:1)

Objective-C是C的扩展,查找C for循环,您将获得答案。 HTH

<强>附录

我打算让你从自己查找C for的学习经验中受益,但在撰写所有其他答案时,由于添加了代码,但它不完整,所以这里是什么您需要按照您希望的顺序生成lk值:

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有用。