如果objectatIndex有任何值,我如何检查数组?即时通讯使用forloop
for (i = 0; i < 6 ; i++)
{
if ([array objectAtIndex: i] == NULL)//This doesnt work.
{
NSLog(@"array objectAtIndex has no data");
}
}
答案 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。