有没有办法让NSMutableArray允许你在数组中有“漏洞”,只有部分数组被填入而不是有连续的项?
我想创建初始数组,并在数组的开头填充一些元素。一段时间之后,我想插入9个新项目,而不是在我当前的最后一个项目之后,但是在数组中间的某个点上,从而在数组列表的某些部分留下一个洞。
我以为我可以这样做,但我收到了错误:
NSRangeException', reason: '***
-[NSMutableArray insertObject:atIndex:]: index 28 beyond bounds [0 .. 5]'
代码:
NSMutableArray *targetArray = [NSMutableArray arrayWithCapacity:100];
- (void)fillInInitially {
// Add the first set of elements to the beginning of the array
for (int i = 0; i < [initialData count]; ++i)
{
[targetArray insertObject:[initialData objectAtIndex:i] atIndex:i];
}
}
- (void)fillInTheBlank:(NSArray *) additions {
// Start adding at index position 28 and current array has 5 items
NSRange range = NSMakeRange(28, [additions count]);
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:range];
// Can't do this when I'm trying to add 9 new items at index 28
// because of the error: index 28 beyond bounds [0 .. 5]
[targetArray insertObjects:additions atIndexes:indexSet];
}
我不想在孔中插入“空白”项,因为当我可以在数组中保存数百个对象时会占用内存。
我需要某种“稀疏”数组数据结构。
答案 0 :(得分:4)
你可以用[NSNull null]填充它。它是一个单例,所以你不会通过用100 [NSNull null]填充数组来占用任何额外的空间。