2012-10-02 10 views
5

Ho una matrice nsmutable e voglio aggiungere un oggetto a un indice particolare, come posso controllare se la matrice di un particolare indice ha un oggetto o no?ios come verificare se l'oggetto nella matrice in particolare indice esiste?

stavo facendo questo:

if ([self.myArray objectAtIndex:index] !=nil) { 

ma mi sto eccezioni la maggior parte del tempo perché "al di là di limiti"

te lo apprezzo molto il vostro aiuto

+0

Non si può avere un 'quelle negative in un NS (Mutevole) Array. (Si noti che un oggetto NSNull è diverso da 'nil'.) È * possibile * controllare facilmente il' count' della matrice, per vedere se l'elemento di un indice è stato ancora assegnato. –

+0

Mancanza di ricerca. Il modo in cui NSArray funziona è semplice e ben documentato. – matt

+0

@matt - Si sta solo bagnando i piedi. Molto meglio questa domanda di "Scrivi il mio programma per me". –

risposta

4

E ' è a mia conoscenza che non è possibile avere un indice di un array a meno che non lo si abbia e ci si opponga. Quello che suggerirei è di impostare tutti gli indici nell'array su [NSNull null] e quindi nel controllo if dell'istruzione per vedere se l'oggetto in quell'indice è un oggetto NSNull. if([[self.myArray objectAtIndex:index] isKindOfClass:[NSNull class]]) allora se che restituisce true, l'hanno sostituire l'oggetto null con il vostro oggetto

+0

come può impostare oggetti nella matrice su [NSNull null]? – Juan

+0

Sai quanti indici vuoi? –

0
if(self.myArray != nil && [self.myArray count] >= (index - 1)) { ... } 
+0

non è necessario controllare l'array nil o no, l'invio di messaggi a nil va bene. – OgreSwamp

+0

D'accordo, è una mia cattiva abitudine. – TigerCoding

7

più semplice (può essere non il migliore) sarà

if ([self.myArray count] > index && [self.myArray objectAtIndex:index] !=nil) 
+0

Vorrei aggiungere un altro controllo: indice> = 0, quindi avrai 3 assegni raggruppati per && operando. – OgreSwamp

+2

Ma salta il '[self.myArray objectAtIndex: index]! = Nil', poiché sarà sempre true (tranne quando myArray è nullo, nel qual caso il primo test fallirà). –