Come inizializzare un NSArray con la dimensione solo in modo da utilizzare un ciclo for per riempirlo in seguito? Il mio ciclo for sarebbeInizializza NSArray con dimensione
for (int i = 0; i < [myArray count]; i++) {
myArray[i] = someData;
}
Come inizializzare un NSArray con la dimensione solo in modo da utilizzare un ciclo for per riempirlo in seguito? Il mio ciclo for sarebbeInizializza NSArray con dimensione
for (int i = 0; i < [myArray count]; i++) {
myArray[i] = someData;
}
NSNull
è la classe usata per rappresentare un oggetto non impostato, non valida o inesistente. Pertanto è possibile eseguire il pad dell'array su una dimensione specifica utilizzando le istanze di questa classe.
NSUInteger sizeOfArray = 10;
NSMutableArray *someArray = [NSMutableArray array];
for (NSUInteger i = 0; i < sizeOfArray; i++) {
[someArray addObject:[NSNull null]];
}
Inoltre, non è possibile utilizzare la sintassi someArray[i] = xyz;
se il valore nella posizione i
non esiste, in quanto causerà un errore di limiti.
C'è un modo per allocare un array, quindi più tardi posso fare' array [i] = obj' senza aggiungere qualcosa prima con 'addObject'? –
Non è necessario inizializzare con una dimensione specifica - è possibile aggiungere oggetti tardi:
NSMutableArray * myArray = [NSMutableArray array];
for (int i = 0; i < 100; i++) {
[myArray addObject:someData];
}
Ci sono lievi guadagni di prestazioni se si conosce la dimensione prima del tempo:
NSMutableArray * myArray = [NSMutableArray arrayWithCapacity:100];
Ma questo è opzionale.
Quindi tutte le risposte stanno dicendo che devo usare un NSMutableArray invece di un NSArray. Significa che non posso usare direttamente un NSArray per risolvere questo problema? –
Un NSArray è immutabile, il che significa che il suo contenuto non può essere modificato in futuro. Questo impedisce anche che qualsiasi oggetto venga aggiunto o rimosso dalla matrice, quindi la sua lunghezza rimarrà sempre costante. Un NSMutableArray d'altra parte è mutabile in quanto gli oggetti possono sempre essere aggiunti o rimossi in qualsiasi momento anche dopo l'inizializzazione. –
La mia limitazione è che non voglio che la dimensione cambi inavvertitamente, ma allo stesso tempo, voglio che l'utente sia in grado di aggiornare i valori. La matrice è una matrice booleana. Vengo da Java quindi capisci i miei problemi. NSMutableArray indica che le dimensioni possono aumentare. Quindi, come posso evitare modifiche involontarie delle dimensioni pur consentendo la modifica dei valori? –