开发者

NSMutableArray's insertObjects:atIndexes and index beyond bounds

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 "spars开发者_如何学Ce" 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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜