【问题标题】:Looping over an NSmutatable Array starting from a certain index从某个索引开始循环遍历 NSmutable 数组
【发布时间】:2017-10-24 07:39:24
【问题描述】:

我有一个快速的问题,如何从某个索引开始循环遍历 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 loops nsmutablearray


    【解决方案1】:

    Objective-C 是 C 的扩展,查找 C for 循环,您就会得到答案。高温

    附录

    我打算让您从自己查找 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 包含三个子部分,分别是 初始化条件增量initialisation先执行,然后condition判断是否执行forbody,increment在语句之后执行在测试主体和 条件 之前,以确定是否应该执行另一次迭代。 for 循环与while 循环大致相同(这里有一些不重要的区别):

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

    【讨论】:

    • 感谢您的帮助
    【解决方案2】:

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

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

    【讨论】:

    • 不要使用int。使用NSInteger。这与NSMutableArray 使用的数据类型相匹配。
    • 感谢您的帮助
    【解决方案3】:

    你只需要修改for-statement。

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

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

    【讨论】:

    • 不要使用int。使用NSInteger。这与NSMutableArray 使用的数据类型相匹配。
    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    • 感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多