我正在尝试检查我的NSDictionary的这个值是否为null:
if ([[dConfiguration objectForKey:@"ButtonsMenu"] objectAtIndex:count] != [NSNull null]){
//stuff...
}
但是我收到了这个错误:
由于未捕获的异常'NSRangeException'而终止应用程序,原因: ' - [__ NSCFArray objectAtIndex:]:index(5)超出边界(5)'
我知道这没有什么,这就是我正在检查的原因。
感谢您的帮助。
答案 0 :(得分:1)
这很简单,看起来像
[dConfiguration objectForKey:@"ButtonsMenu"]
返回NSArray或类似内容,而不是发送它-objectAtIndex:
,并提供索引count
。
错误告诉您数组有5个元素,并且您已经要求第六个元素。我不确定您要检查什么,为什么要将其与NSNull
进行比较。
0:[first] 1:[second] 2:[third] 3:[forth] 4:[fifth]
看起来你只需要检查你的数组中是否至少有count
个元素。
if([[dConfiguration objectForKey:@"ButtonsMenu"] count] > count)
{
// stuff...
}
但是,请注意,这是针对您在集合中没有NSNull
的情况(通常是这样)。即它只检查您的集合是否在索引count
处具有元素。如果你在那里有NSNull
,那么你应该检查它是否有索引元素,如果它不是NSNull
:
NSArray *buttonsMenu = [dConfiguration objectForKey:@"ButtonsMenu"];
if([buttonsMenu count] > count)
{
id obj = [buttonsMenu objectAtIndex:count];
if(obj != [NSNull null]) // it's ok to compare like that
{
// stuff...
}
}
答案 1 :(得分:0)
并不是那里没有任何东西......甚至“那里”也不存在。
在尝试评估count
的任何内容之前,检查您的objectAtIndex
是否小于菜单中的对象数,包括它是否为空对象。