Objective c NSMutableArray检查项目是否存在

Objective c NSMutableArray检查项目是否存在,objective-c,nsmutablearray,Objective C,Nsmutablearray,我有一个NSMutableArray,包含100多个字符,其中我用以下内容填充了一个表: int rowCount = indexPath.row; Character *character = [self.characterArray objectAtIndex:rowCount]; cell.textLabel.text = character.name; cell.detailTextLabel.text = character._id; 然后,我得到了一个单独的NSMutableAr

我有一个NSMutableArray,包含100多个字符,其中我用以下内容填充了一个表:

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

cell.textLabel.text = character.name;
cell.detailTextLabel.text = character._id;
然后,我得到了一个单独的NSMutableArray,其中包含一个_id和中的相邻值,但是这个数组只有大约8个随机id为的值

基本上我想检查字符。\ 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的新手。

目前您正在检查相邻字符对象的同一索引,您应该在整个数组中检查它

你可以这样试试

-(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;
}

当前您正在检查相邻字符对象的同一索引,您应该在整个数组中检查它

你可以这样试试

-(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;
}

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

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

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

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

我尝试了一下,但在第一个块上出现了“控制可能达到非无效函数的结尾”错误,我猜是因为它没有给出明确的返回。是的,解决了,检查更新的答案。我尝试了一下,但在第一个块上出现了“控制可能达到非无效函数的结尾”错误,我猜是因为它没有给出明确的返回。是的,解决了,检查更新的答案。非常优雅的解决方案。谢谢,这解决了所有问题。非常优雅的解决方案。谢谢,这解决了所有问题。