NSArray中的索引对象

9

我有一个数组。我想检查特定索引位置是否存在对象。如何做到这一点?请帮忙。


3
你的意思是要检查特定索引处是否存在一个特定对象,还是是否存在任何对象在特定索引处? - gtmtg
@gtm 我想要检查特定索引处的任何对象。谢谢。 - hgpl
8个回答

16

如果你只想检查是否存在一个对象

if (myIndex < [array count])

如果你想找到一个特定的对象

[array indexOfObject:myObject];

如果你想知道某个索引处的对象是否属于某个类

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

从参考资料中:如果索引超出数组的末尾(即,如果索引大于或等于计数返回的值),则会引发NSRangeException异常。 - trojanfoe
NSArray 不能包含 nil - trojanfoe

11

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


4

您可以使用containsObject方法来检查数组是否包含特定对象。如果包含,则通过indexOfObject方法获取其索引。

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

您还可以删除-[NSArray containsObject:]行,并检查-[NSArray indexOfObject:]是否返回了NSNotFound - user7085621

1

我知道这是一个旧的帖子,但只是想帮忙。

您可以像这样向NSArray添加一个类别

@implementation NSArray (Safe)

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

@end

0

像这样检查

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

修改后: 你应该这样做

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

这不会引发异常,并且数组中的对象应该与空值进行比较。


如果您要检查对象,则应检查 nil 而不是 null。 - Pfitz
从参考文献中:如果索引超出了数组的末尾(也就是说,如果索引大于或等于计数返回的值),则会引发NSRangeException异常。 - trojanfoe
你可以使用 nil,因此你可以使用 [array count] 来计算数组元素的数量,并使用 if 条件语句。 - Sumanth
1
不行;首先objectAtIndex会像我第一条评论中所描述的那样引发异常,而且NSArray不能包含nil,因此也行不通。 - trojanfoe
再次强调,NSArray 不能包含 nil,此外 <= 是错误的,应该改为 < - trojanfoe

0
你应该检查数组的长度(使用count方法),由于NSArray不能包含nil,因此它必须包含某些内容
- (BOOL)arrayContainsSomethingAtIndex:(NSUInteger) index
{
    return [_myArray count] > index;
}

0
首先,您必须检查该对象的索引是否小于数组的大小,然后查询该索引处的数组。
if (index < [array count] && [array objetAtIndex:index]){
/* Your code*/
}

0
使用 indexOfObject: 方法。
if ([Array indexOfObject:object]==index) {
        //code
    }

1
你的意思是 if([Array indexOfObject:obj] == index) 吗? - gtmtg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接