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