2012-06-27 4 views
7

У меня есть массив. Я хочу проверить, есть ли объект, присутствующий в определенном индексе, или нет. Как это сделать? Пожалуйста помоги.Объект по индексу в NSArray

+3

Вы хотите сказать, вы хотите проверить, существует ли конкретный объект ** ** на определенный индекс, или ** любого объекта ** существует в конкретный индекс? – gtmtg

+0

@gtm Я хочу проверить любой объект по определенному индексу. Спасибо – hgpl

ответ

13

если вы просто хотите, чтобы проверить, есть ли объект

if (myIndex < [array count]) 

, если вы хотите найти конкретный объект

[array indexOfObject:myObject]; 

, если вы хотите знать, если объект в какой-то индекс имеет некоторый класс

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

Из ссылки: если индекс находится за пределами массива (то есть, если индекс больше или равен значению, возвращаемому счетчиком), возникает исключение NSRangeException. – trojanfoe

+0

'NSArray' не может содержать' nil'. – trojanfoe

+0

Хорошо, как насчет '<='? – trojanfoe

0

проверить, как этот

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

Modified: Вы должны сделать как этот

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

Это не будет поднимать исключение и объект в массиве должен сравнить со значением ноль

+0

, если вы проверяете объекты, которые вы проверяете на ноль, а не на нуль – Pfitz

+0

Из ссылки: если индекс находится за пределами массива (то есть, если индекс больше или равен значению, возвращаемому счетчиком), возникает исключение NSRangeException , – trojanfoe

+0

вы можете использовать 'nil' .. , поэтому вы можете использовать [количество массивов] для подсчета элемента массива и использовать, если условие – Sumanth

0

Вы должны проверить длину из массив (с использованием метода count), и данный NSArray не может содержать nil, он должен поэтому содержать что-то:

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

Сначала вы должны проверить, если индекс этого объекта меньше, чем размер массива, то вы запрашиваете массив по этому индексу.

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

Вы можете использовать containsObject метод, чтобы проверить погоду ваш массив содержит конкретный объект или нет. Если содержит, то получить его индекс по indexOfObject методом

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

+1 за то, что помогли мне ... Ничего. – Shivaay

+0

Удивительный ответ! – Genevios

0

Использование indexOfObject: метода.

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

Вы имеете в виду 'if ([Array indexOfObject: obj] == index)'? – gtmtg

+0

Да ............ –

1

Я знаю, что это старая нить, но просто пытаюсь помочь.

Вы можете добавить категорию NSArray что-то вроде этого

@implementation NSArray (Safe) 

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

@end 
Смежные вопросы