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

Looping over an NSmutatable Array starting from a certain index

我有一个快速的问题,如何从某个索引开始遍历 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 开始。感谢任何帮助

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 包含三个子部分,即 initialisationcondition增量。先执行初始化,然后条件判断是否执行for体,增量 在正文中的语句之后和在测试 条件 以确定是否应执行另一次迭代之前执行。一个for循环大致(有一些区别在这里不重要)到while循环:

initialisation;
while(condition)
{
    body statements;
    increment;
}

您必须使用索引(普通)for 循环而不是快速枚举 (for-in):

int l;
for (l=startValue; l<=endValue; l++)
{
    int i;
    for (int i=l; i<=endValue; i++) 
    {
      …
    }
}

你只需要修改for语句。

 NSInteger indexYouNeed;
 NSInteger iterationCount;

 for (int i = indexYouNeed; i < iterationCount; i++) {
       /* Your code here */         
  }

您可能会发现 this link 有帮助。