iphone - 我如何检查NSMutableArray ObjectAtIndex是否没有任何值

时间:2010-07-15 04:43:10

标签: iphone

如果objectatIndex有任何值,我如何检查数组?即时通讯使用forloop

for (i = 0; i < 6 ; i++)
{
    if ([array objectAtIndex: i] == NULL)//This doesnt work.
    {
        NSLog(@"array objectAtIndex has no data");
    }
}

5 个答案:

答案 0 :(得分:20)

您无法将nil存储在基础集合类(例如NSArray)中,您必须使用NSNull。要检查数组的成员是否为NSNull,您可以这样做:

for (int i = 0; i < 6; i ++) {
    if ([array objectAtIndex:i] == [NSNull null]) {
        NSLog(@"object at index %i has no data", i);
    }
}

如果您想查看数组中有多少项,请使用-[NSArray count]。如果要遍历数组以查看任何对象是否为NSNull,但您不关心哪一个,则可以使用快速枚举或-[NSArray containsObject:]

for (id anObject in array) {
    if (anObject == [NSNull null]) {
        // Do something
    }
}

if ([array containsObject:[NSNull null]]) {
    // Do something
}

答案 1 :(得分:2)

尝试使用条件

if ([[Array objectAtIndex:i] length] == 0) {
// Do what you want
}

答案 2 :(得分:1)

NSArray(或NSMutableArray)不能包含nil值。所以你的if子句永远不会返回true。此外,您应该使用nil而不是NULL

答案 3 :(得分:1)

与@Marco所说的类似:保证objectAtIndex:永远不会返回nil,除非出现可怕的错误。然而,当你到达那一点时,无论如何都为时已晚,你无能为力(而且你很可能会在每次事件发生之前抛出异常)。

如果您需要存储一个值来表示“此处没有任何内容”,则应使用[NSNull null]单例。这完全它的用途。

答案 4 :(得分:1)

据我所知 - 没有对象的索引。因为当您删除一个对象时,该数组将自行修剪。您可以放置​​一些空对象,如@“”或NSNull,但至少是一个对象。

另一点,如果您要查找的索引超出范围,您将获得NSRangeException