2012-06-27 9 views
7

Tengo una matriz. Quiero verificar si hay un objeto presente en un índice en particular o no. ¿Como hacer esto? Por favor ayuda.Objeto en el índice en NSArray

+3

Qué quiere decir que desea comprobar si existe un objeto específico ** ** a un índice determinado o si cualquier objeto ** ** existe al un índice en particular? – gtmtg

+0

@gtm Quiero verificar cualquier objeto en un índice específico. Gracias – hgpl

Respuesta

13

si sólo quiere comprobar si hay un objeto

if (myIndex < [array count]) 

si usted quiere encontrar un objeto específico

[array indexOfObject:myObject]; 

si desea saber si el objeto en algún índice es de alguna clase

[[array objectAtIndex:myIndex] isKindOfClass:[TheClassToCompareTo class]]; 
+0

De la referencia: si el índice está más allá del final de la matriz (es decir, si el índice es mayor o igual que el valor devuelto por la cuenta), se genera una NSRangeException. – trojanfoe

+0

'NSArray' no puede contener' nil'. – trojanfoe

+0

OK, ¿qué tal el '<='? – trojanfoe

0

cheque como este

if([array objectAtIndex:i]!= nil) 
{ 
NSLog("Object present"); 
} 
else{ 
NSLog("Object Not Present") 
} 

modificación: Debe hacer como esto

if(i<=[array count]){ 
    if([array objectAtIndex:i]!= nil) 
    { 
    NSLog("Object present"); 
    } 
    else{ 
    NSLog("Object Not Present") 
    } 
} 

Esto no elevará excepción y objeto en conjunto debe comparar con el valor nulo

+0

si marca objetos que verifica contra nulos y no nulos – Pfitz

+0

De la referencia: Si el índice está más allá del final de la matriz (es decir, si el índice es mayor o igual que el valor devuelto por la cuenta), se genera una NSRangeException . – trojanfoe

+0

puede usar 'nil' .. para que pueda usar [array count] para contar el elemento de la matriz y usar si la condición es – Sumanth

10

BOOL exists = index < [array count] ? YES : NO;

0

Debe comprobar la longitud de la array (utilizando el método count) y dado NSArray no puede contener nil debe contener por lo tanto algo:

- (BOOL)arrayContainsSomethingAtIndex:(NSUInteger) index 
{ 
    return [_myArray count] > index; 
} 
0

En primer lugar, debe comprobar si el índice de ese objeto es más pequeño que el tamaño de la matriz, a continuación, se consulta la matriz en ese índice.

if (index < [array count] && [array objetAtIndex:index]){ 
/* Your code*/ 
} 
3

Puede utilizar containsObject método para comprobar el tiempo Su gama contiene el objeto específico o no. Si contiene, a continuación, obtener su índice de indexOfObject método

if ([yourArrayArray containsObject:yourObject]) 
{ 
    NSLog(@"Found"); 
    int index = [yourArray indexOfObject:yourObject];  
} 
+0

+1 por ayudarme ... Linda respuesta. – Shivaay

+0

Awesome answer !! – Genevios

0

Uso indexOfObject: método.

if ([Array indexOfObject:object]==index) { 
     //code 
    } 
+1

¿Quiere decir 'if ([Array indexOfObject: obj] == index)'? – gtmtg

+0

sí ............ –

1

Sé que esto es viejo pero solo estoy tratando de ayudar.

Puede añadir una categoría a NSArray algo como esto

@implementation NSArray (Safe) 

- (id)safeObjectAtIndex:(NSUInteger)index { 
    if (index >= [self count]) return nil; 
    return [self objectAtIndex:index]; 
} 

@end 
Cuestiones relacionadas