1

我有一个包含 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 的新手。

4

2 回答 2

4

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

BOOL result = [[neighbours valueForKey:@"_id"] containsObject: character._id];
于 2013-08-16T14:55:47.227 回答
0

目前您正在检查位于 Neighbour 相同索引处的 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;
}
于 2013-08-16T14:20:40.907 回答