【问题标题】:NSMutableArray - Add array at startNSMutableArray - 在开始时添加数组
【发布时间】:2014-04-24 22:06:48
【问题描述】:

这是一个简单的拉动刷新案例。我已将数据加载到表中并在后端有一个可变数据数组,我收到一个新数据数组并希望在现有数组的开头添加这个完整的数组。

一种解决方法是使用新到达的数据创建新数组,然后使用addObjectsFromArray: 方法将先前的数组添加到其中。是否有一些解决方法可以直接将新数据数组添加到前一个数组的开头?

【问题讨论】:

    标签: ios ios7 nsmutablearray append


    【解决方案1】:

    首先,建立一个NSIndexSet

    NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange:
        NSMakeRange(0,[newArray count])];
    

    现在,利用NSMutableArrayinsertObjects:atIndexes:

    [oldArray insertObjects:newArray atIndexes:indexes];
    

    或者,有这种方法:

    oldArray = [[newArray arrayByAddingObjectsFromArray:oldArray] mutableCopy];
    

    【讨论】:

    • 替代解决方案对我来说是最简单的解决方案。 (y)
    【解决方案2】:

    NSMutableArray 提供了insertObjects:atIndexes: 方法,但使用addObjectsFromArray: 建议的附加方式更容易。

    【讨论】:

      【解决方案3】:

      -insertObject:atIndexes: 很简单,并且应该(我相信)比使用-addObjects 和交换数组更有效。它可能最终看起来像这样:

      [existingResults addObjects:newResults atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newResults.count)]]`
      

      【讨论】:

      • 简单又漂亮:) 我相信 newResults.count 应该是 newResults.count-1。
      • 我不这么认为; NSMakeRange() 的第二个参数是计数,而不是结束索引。不过谢谢! :-)
      【解决方案4】:

      创建一个新数组可能是您最好的解决方案,但您也可以使用循环

      NSUInteger index;
      
      index = 0;
      for ( id item in sourceArray )
      {
          [destArray insertObject:item atIndex:index];
          index++;
      }
      

      【讨论】:

        【解决方案5】:

        简单的方法:

        NSMutableArray *arrayTmp = [firstArr addObjectsFromArray:myArray];
        myArray = arrayTmp;
        

        【讨论】:

          猜你喜欢
          • 2014-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-09
          相关资源
          最近更新 更多