将对象添加到未知大小的数组,而不是有序

时间:2016-04-19 19:08:09

标签: ios objective-c swift nsmutablearray nsarray

我正在尝试找到一种结构或方法,将数组中的对象添加到另一个数组中。澄清;

actualArray[] // size not specified
smthArray[1,9,8,4,9]

我想从第5个索引将smthArray中的对象添加到actualArray。像那样,

actualArray[,,,,,1,9,8,4,9]

第二次我可以从乞讨中添加对象。像那样,

actualArray[1,9,8,4,9,1,9,8,4,9]

我需要达到什么样的结构?

注意: NSSet不符合我的目的,因为我关心的是actualArray命令。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在尝试使用insertObjects:atIndexes:执行描述的第一步(因此元素从索引5开始)。您无法使用NSMutableArray执行此操作,因为它不支持空元素。以下是Apple文档中的一些相关讨论(参见https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/index.html#//apple_ref/occ/cl/NSMutableArray):

  

请注意NSArray个对象与C数组不同。也就是说,即使您在创建数组时指定了大小,指定的大小也会被视为“提示”;数组的实际大小仍为0.这意味着您无法在大于当前数组计数的索引处插入对象。例如,如果一个数组包含两个对象,其大小为2,那么您可以在索引0,1或2处添加对象。索引3是非法的并且超出范围;如果您尝试在索引3处添加对象(当数组的大小为2时),NSMutableArray会引发异常。

如果你想实现你描述的内容,你需要先用NSNull对象填充空格:

for (NSUInteger i = 0; i < tempArray.count; i++) {
    [actualArray addObject:[NSNull null]];
}

然后你可以添加你的tempArray内容:

[actualArray addObjectsFromArray:tempArray];

最后,你可以用内容替换空值:

[actualArray replaceObjectsInRange:NSMakeRange(0, tempArray.count) withObjectsFromArray:tempArray.count];