NSMutableArray
-
13-09-2019 - |
Domanda
Ho un NSMutableArray:
NSMutableArray *temp = //get list from somewhere.
Ora c'è un metodo objectAtIndex che restituisce l'oggetto di indice specificata.
Quello che voglio fare è che, voglio controllare prima se un oggetto di indice specificato esiste o no. Se esiste che voglio prendere quell'oggetto. Qualcosa di simile:
if ([temp objectAtIndex:2] != nil)
{
//fetch the object
}
Ma ho eccezione al caso dichiarazione dicendo che l'indice al di là limite.
Si prega di qualcuno mi dica come raggiungere questo obiettivo.
Soluzione
Non è possibile avere gli slot 'vuote' in un NSArray. Se [count myArray] == 2 cioè array ha due elementi poi si sa per certo che ci sia un oggetto in corrispondenza dell'indice 0 e un oggetto nella posizione di indice 1. Questo è sempre il caso.
Altri suggerimenti
Controllare la lunghezza prima utilizzando il metodo di conteggio.
if ([temp count] > indexIWantToFetch)
id object = [temp objectAtIndex:indexIWantToFetch];
che si possa fare in questo modo:
Quando si inizializza, fare qualcosa di simile:
NSMutableArray *YourObjectArray = [[NSMutableArray alloc] init];
for(int index = 0; index < desiredLength; index++)
{
[YourObjectArray addObject:[NSNull null]];
}
Poi, quando si desidera aggiungere ma controllare se esiste già, fare qualcosa di simile:
YourObject *object = [YourObjectArray objectAtIndex:index];
if ((NSNull *) object == [NSNull null])
{
/// TODO get your object here..
[YourObjectArray replaceObjectAtIndex:index withObject:object];
}
Basta controllare che l'indice è> = 0 e Restituisce il numero di oggetti attualmente nel ricevitore. - (NSUInteger)count
int arrayEntryCount = [temp count];
Prima di tutto si controlla la lunghezza di array -
* NSMutableArray temp = // ottenere l'elenco da qualche parte.
Ora check- se (lunghezza temp) {
Il tuo objectclass * obj = [Temp objectAtIndex: indexnumber];
// indexnumber è 0,1,2, 3 o chiunque ...
}