检查数组是否包含特定索引处的元素?

时间:2011-09-03 06:50:54

标签: iphone objective-c nsarray

if (![[array objectAtIndex:indexPath.row] isEmpty]) {
   .... proceed as necessary                                 
}

indexPath.row可以包含任何类型的对象,也可以为空。通常它是空的,因此当它在null时,在尝试检索指定位置的对象时会发出窒息。我已经尝试过上述方法,但这也不起作用。检查此方案的正确方法是什么?

2 个答案:

答案 0 :(得分:18)

如果不知道数组是否包含索引处的对象,则不应调用objectAtIndex:。相反,你应该检查,

if (indexPath.row < [array count])

如果您使用array作为tableView的数据源。您只需将[array count]作为行数返回

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [array count];
}

并且,只需在 indexPath.row 处获取对象,而无需检查任何条件。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // Other code
    NSObject *obj = [array objectAtIndex:indexPath.row];
    // Proceed with obj
}

答案 1 :(得分:6)

使用[array count]方法:

if (indexPath.row < [array count])
{
   //The element Exists, you can write your code here
}

else 
{
   //No element exists at this index, you will receive index out of bounds exception and your application will crash if you ask for object at current indexPath.row.
}