2012-10-02 25 views
5

Tengo una matriz nsmutable y quiero agregar un objeto en un índice particular, ¿cómo puedo verificar si la matriz en un índice en particular tiene un objeto o no?ios cómo verificar si el objeto en la matriz en un índice particular existe?

yo estaba haciendo esto:

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

pero yo estoy haciendo excepciones, la mayoría de las veces porque "más allá de los límites"

que realmente apreciará su ayuda

+0

No se puede tener un 'las negativas en un NS (mutable)Formación. (Tenga en cuenta que un objeto NSNull es diferente de 'nil'.) Usted * puede * verificar fácilmente el' conteo 'de la matriz, para ver si el elemento en un índice ha sido asignado aún. –

+0

Falta de investigación. La forma en que funciona NSArray es directa y está bien documentada. – matt

+0

@matt - Se está mojando los pies. Mucho mejor esta pregunta que "Escribe mi programa para mí". –

Respuesta

4

Se Entiendo que no puedes tener un índice de una matriz a menos que tengas y objetas allí. Lo que sugeriría es establecer todos los índices en la matriz en [NSNull null] y luego en su declaración if comprobar para ver si el objeto en ese índice es un objeto NSNull. if([[self.myArray objectAtIndex:index] isKindOfClass:[NSNull class]]) entonces si que devuelve true, se reemplaza el objeto nulo con el objeto

+0

¿cómo se pueden establecer los objetos en la matriz en [NSNull null]? – Juan

+0

¿Sabes cuántos índices quieres? –

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

no es necesario que compruebe si el array es nulo o no, el envío de un mensaje a nil está bien. – OgreSwamp

+0

De acuerdo, es un mal hábito mío. – TigerCoding

7

más fácil (puede ser no el mejor) habrá

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

Agregaría una comprobación más: índice> = 0, por lo que tendrá 3 controles agrupados por && operando. – OgreSwamp

+2

Pero omita el '[self.myArray objectAtIndex: index]! = Nil', ya que siempre será verdadero (excepto cuando myArray es nulo, en cuyo caso la primera prueba fallará). –

Cuestiones relacionadas