Gibt es eine Möglichkeit, NSMutableArray so einzurichten, dass Sie "Löcher" innerhalb des Arrays haben, in denen nur Teile des Arrays gefüllt sind, statt zusammenhängende Elemente?InsertObjects von NSMutableArray: atIndexes und Index über Grenzen hinweg
Ich möchte das erste Array mit einigen Elementen am Anfang des Arrays erstellt werden. Einige Zeit später möchte ich 9 neue Elemente einfügen, nicht unmittelbar nach meinem aktuellen letzten, sondern an einem Punkt in der Mitte des Arrays, wodurch ein Loch in Teilen der Array-Liste bleibt.
Ich dachte, ich könnte dies tun mit, aber ich bekomme die Fehlermeldung:
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];
}
wollte ich nicht da, dass „leere“ Elemente in die Löcher eingefügt werden würde Speicher aufnehmen, wenn ich mehrere hundert Objekte im Array halten kann.
Ich brauche eine Art "spärliche" Array-Datenstruktur.