Is there a way to get NSMutableArray to allow you to have "holes" within the array where only portions of the array are filled in instead of having contiguous items?
I want to create the initial array with some some elements filled in at the start of the array. Some time later, I would like to insert 9 new items, not immediately after my current last one, but at a some point in the middle of the array, thus leaving a hole in parts of the array list.
I thought I could do this with but I get the error :
NSRangeException', reason: '***
-[NSMutableArray insertObject:atIndex:]: index 28 beyond bounds [0 .. 5]'
Code:
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];
}
I didn't want to insert "blank" items in the holes since that would take up memory when I may hold several hundred objects in the array.
I need some sort of a "sparse" array data structure.
You can fill it with [NSNull null]. It's a singleton, so you're not going to be taking up any extra space by filling your array with 100 [NSNull null]s.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With