NSMutableArray检查项是否存在

时间:2013-08-16 14:10:31

标签: objective-c nsmutablearray

我有一个包含100多个字符的NSMutableArray,其中我填充了一个表:

int rowCount = indexPath.row;
Character *character = [self.characterArray objectAtIndex:rowCount];

cell.textLabel.text = character.name;
cell.detailTextLabel.text = character._id;

然后我得到了一个单独的NSMutableArray,其中包含_id和邻居值,但是这个数组只有大约8个带有随机id的值。

基本上我想检查第二个数组中是否存在character._id,它会在表格上显示一个复选标记。

我尝试过:

Neighbour *neighbour = [self.neighbourArray objectAtIndex:rowCount];

if (character._id == neighbour._id && neighbour.neighbour == 1){
         cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }else{
         cell.accessoryType = None;
}

但它崩溃了应用程序(因为它只有8个值100,我猜)

有没有一种简单的方法可以完全检查这个或更好的方法?

谢谢,任何建设性的建议都会非常感激,我是Xcode的新手。

2 个答案:

答案 0 :(得分:4)

您可以使用KVC来避免枚举:

BOOL result = [[neighbours valueForKey:@"_id"] containsObject: character._id];

答案 1 :(得分:0)

目前你正在检查邻居的相同索引处的Character对象,你应该在整个数组中检查它,

你可以这样尝试

-(BOOL)check :(Character *) character
{

for(Neighbour *neighbour in  self.neighbourArray )
{
  if(character._id == neighbour._id && neighbour.neighbour == 1)
   return TRUE;
}

  return FALSE;

}

现在只需在tableviewMethod中调用此方法

int rowCount = indexPath.row;
Character *character = [self.characterArray objectAtIndex:rowCount];

if ([self check:character]){
         cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }else{
         cell.accessoryType = None;
}