2012-10-02 12 views
5

Mam tablicę nsmutable i chcę dodać obiekt w określonym indeksie, w jaki sposób mogę sprawdzić, czy tablica w określonym indeksie ma obiekt, czy nie?ios jak sprawdzić, czy obiekt w tablicy w określonym indeksie istnieje?

robiłem to:

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

ale jestem coraz wyjątków większość czasu, bo "poza granice"

będę naprawdę wdzięczny za pomoc

+0

Nie można mieć 'zerowe w NS (zmienny)Szyk. (Zauważ, że obiekt NSNull różni się od 'nil'.) * Możesz * łatwo sprawdzić" liczbę "tablicy, aby sprawdzić, czy element w indeksie został jeszcze przydzielony. –

+0

Brak badań. Sposób działania NSArray jest prosty i dobrze udokumentowany. – matt

+0

@matt - Po prostu robi się mokry. O wiele lepiej to pytanie niż "Napisz mój program dla mnie". –

Odpowiedz

4

It rozumiem, że nie możesz mieć indeksu tablicy, chyba że masz i tam sprzeciwisz się. Sugerowałbym ustawienie wszystkich indeksów w tablicy na [NSNull null], a następnie w instrukcji if sprawdź, czy obiekt w tym indeksie jest obiektem NSNull. if([[self.myArray objectAtIndex:index] isKindOfClass:[NSNull class]]) wtedy jeśli zwróci true, które zastąpi null obiektu z obiektem

+0

jak ustawić obiekty w tablicy na [NSNull null]? – Juan

+0

Czy wiesz, ile indeksów chcesz? –

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

Nie musisz sprawdzać, czy tablica jest pusta, czy nie, wysyłanie wiadomości do zera jest w porządku. – OgreSwamp

+0

Zgadzam się, to mój zły nawyk. – TigerCoding

7

Najprostsza (może być nie najlepsza) będzie

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

Dodałbym jeszcze jeden czek: index> = 0, więc będziesz mieć 3 kontrole pogrupowane według && operand. – OgreSwamp

+2

Ale pomiń '[self.myArray objectAtIndex: index]! = Nil', ponieważ zawsze będzie to prawda (z wyjątkiem sytuacji, gdy myArray jest zerowy, w takim przypadku pierwszy test zakończy się niepowodzeniem). –

Powiązane problemy