查看NSMUtableArray中的索引[i]中是否存在对象

时间:2009-09-15 14:08:58

标签: objective-c arrays

人们我想看看索引[i]中的元素是否不存在于不同的(或当前的)数组中。 例如,如果我的数组看起来有点像这样

[wer, wer4 , wer5 , werp , klo ..

然后我想看看aExerciseRef.IDE(例如“sdf”)是否在index [i]中存在或不存在。 我假设我必须使用某种迭代器..

for( int i = 0; i < 20; i++ )
{
   if([instruct objectAtIndex:index2 + i] != [instruct containsObject:aExerciseRef.IDE] )                       
   NSLog(@"object doesn't exist at this index %i, i );
   else
   NSLog(@"well does exist")
}

我知道这不起作用,只是要详细说明我想要实现的目标。

修改

我将尝试更多地阐述它并且更具体。

1)首先aExerciseRef.IDE每次调用时都会更改,所以有一次它会“再次”调整,这是“werd”。

2)想象一个数组被aExerciseRef.IDE填充然后我想比较一下这个数组中的元素是否存在于instruct数组中。

所以我想看一下让我们说位置2(wtrk)

的元素
[wer, wtrk, wer , sla ... 

存在于正在填充aExerciseRef.IDE的数组中。

我希望这次我更清楚。

2 个答案:

答案 0 :(得分:2)

Lord Mighty爵士部分正确。是的,你的比较是错误的。不,他的解决方案不起作用。

以下是:

if (index < [anArray count] && [[anArray objectAtIndex:index] isEqual:anObject]) {
  NSLog(@"Got it!");
} else {
  NSLog(@"Don't have it.");
}

或者,您可以使用containsObject:方法来实现相同的目的:

if ([anArray containsObject:aExerciseRef.IDE]) {
  NSLog(@"Got it!");
} else {
  NSLog(@"Don't have it.");
}

第二个选项不会为您提供对象的索引,但可以使用以下方法轻松解决:

NSInteger index = NSNotFound;
if ([anArray containsObject:aExerciseRef.IDE]) {
  index = [anArray indexOfObject:aExerciseRef.IDE];
  ...
}

答案 1 :(得分:0)

你的例子毫无意义,并没有澄清这个问题。您正在对类型(id)

的表达式进行比较
[instruct objectAtIndex:index2 + i]

和一个BOOL类型

[instruct containsObject:aExerciseRef.IDE]

如果你要查找的对象是数组中的索引x,那么不言而喻,数组中的containsObject将为该对象返回YES。

如果您想要完成的只是您在标题中所说的内容,那么它就像以下一样简单:

if ([[anArray objectAtIndex:index] == anObject])
  NSLog (@"Got it!");
else
  NSLog (@"Don't have it.");