NSMutableArray检查项目是不是存在[重复]

Posted

技术标签:

【中文标题】NSMutableArray检查项目是不是存在[重复]【英文标题】:NSMutableArray check if item exists [duplicate]NSMutableArray检查项目是否存在[重复] 【发布时间】:2013-08-16 14:10:30 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

非常优雅的解决方案。 谢谢,一切都解决了。【参考方案2】:

目前您正在检查 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;

【讨论】:

我试了一下,但在第一个块上出现“控制可能到达非无效函数的结尾”错误,我猜是因为它没有给出明确的回报。 是的,请检查更新的答案。

以上是关于NSMutableArray检查项目是不是存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php检查文件名是不是存在,重命名文件

如何检查 NSDictionary 中的值是不是存在于字典数组中

如何测试 NSMutableArray 中是不是存在 _NSCFConstantString?

如何检查网页是不是存在。 jQuery 和/或 PHP

查看网页中是不是存在字符串后如何重定向到自定义网页

空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]