Initialisieren NSArray mit Größe
Wie Initialisiere ich ein NSArray mit der Größe nur so eine for-Schleife verwenden, um füllen Sie es später? Meine for-Schleife wäre
for (int i = 0; i < [myArray count]; i++) {
myArray[i] = someData;
}
- So alle Antworten sind zu sagen, dass ich muss ein NSMutableArray im Gegensatz zu einem NSArray. Bedeutet das, dass ich nicht direkt verwenden können ein NSArray für die Lösung dieses Problems?
- Ein NSArray ist unveränderlich Sinn, dass seine Inhalte nicht bearbeitet werden können in der Zukunft. Dies verhindert auch, dass alle Objekte Hinzugefügt wird, oder aus dem array entfernt, so dass die Länge immer konstant bleiben. Ein NSMutableArray auf der anderen Seite ist veränderlich, dass Objekte können jederzeit Hinzugefügt oder entfernt werden jederzeit, auch nach der Initialisierung.
- Meine Einschränkung ist, dass ich nicht wollen, dass die Größe zu ändern unbeabsichtigt, aber zur gleichen Zeit, ich will ein Benutzer die Aktualisierung der Werte. Das array ist ein Boolean-array. Ich komme von Java, damit Sie verstehen meine Probleme. Die NSMutableArray bedeutet, dass die Größe wachsen kann. Also, wie kann ich verhindern, dass versehentliche änderung in der Größe, während die Werte änderbar sein?
- Sie können nicht tun, mit jedem von den built-in Klassen. Sie wickeln konnte
NSMutableArray
in Ihre eigene Klasse oder Unterklasse, wenn Sie möchten. - Wenn Sie nur die Speicherung von BOOLs, könnten Sie ein C-array.
- Aber es klingt wie Sie ' ll wahrscheinlich wollen eine benutzerdefinierte Klasse mit einer öffentlichen Schnittstelle, die (privat) nutzt ein NSMutableArray die Daten speichern.
- Wie @AaronBrager sagte, Sie kann nur mit einem C-array statt. Wenn Sie nicht brauchen, eine der Methoden in NSArray dann wäre die beste option sein. Andernfalls verwenden Sie
NSMutableArray
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu initialisieren es mit einer bestimmten Größe - Sie können Objekte hinzufügen, später:
Gibt es leichte performance-Gewinne, wenn Sie wissen, die Größe der Zeit Voraus:
Aber das ist optional.
NSNull
ist die Klasse repräsentiert ein unset, ungültiges oder nicht vorhandenes Objekt. Daher können Sie die pad-array einer bestimmten Größe mit den Instanzen dieser Klasse.Weiter, Sie können nicht verwenden Sie die syntax
someArray[i] = xyz;
wenn der Wert an positioni
existiert nicht, da dies zu einem out of bounds error.array[i] = obj
ohne etwas hinzuzufügen, bevor Sie es mitaddObject
?