【问题标题】:How to insert an array into an existing NSMutableArray at a specific index如何在特定索引处将数组插入现有 NSMutableArray
【发布时间】:2020-04-15 13:15:35
【问题描述】:

我尝试过使用

NSMutableArray *existingArray = [@[@"1", @"3", @"4"] mutableCopy];
NSArray *newItems = @[@"2", @"2", @"2", @"2"];
[existingArray insertObjects:newItems atIndexes:[NSIndexSet indexSetWithIndex:1]];

上面的代码最终会崩溃,因为我想为所有新项目提供所有索引。

我想要的是能够在 existingArray 的位置 1 插入 newItems,同时保留最终数组中 newItems 的顺序。

有没有简单的方法来提供所有这些索引?

【问题讨论】:

    标签: ios arrays objective-c


    【解决方案1】:

    没有 cmets 的正确答案...

    NSInteger position = 1;
    NSRange range = NSMakeRange(position, newItems.count);
    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
    [existingArray insertObjects:newItems atIndexes:indexSet];
    

    【讨论】:

    • 这只会在数组顶部添加新项目。您应该按照相关示例将 NSMakeRange 的第一个值从 0 更改为 1。
    • @ZeeshanTufail 感谢您的评论。答案已编辑。
    【解决方案2】:

    您可以通过“替换”一个空范围来插入:

    [existingArray replaceObjectsInRange:NSMakeRange(1, 0) withObjectsFromArray:newItems];
    

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2015-11-08
      • 2010-10-09
      • 2017-02-11
      • 2011-04-28
      相关资源
      最近更新 更多