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.

È stato utile?

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 ...

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top