比较iPhone中的两个NSMutableArray索引

时间:2012-07-17 06:39:49

标签: iphone ipad nsmutablearray nsarray compare

我是iPhone开发新手,

我想比较两个数组索引

for (int i=0; i<[CustomeDateArray count]; i++)
  {
      if (([CustomeDateArray objectAtIndex:1] == [newDateArray objectAtIndex:1]) && ([CustomeDateArray objectAtIndex:2] == [newDateArray objectAtIndex:2]))          
                {
                    exists=TRUE;
                    NSLog(@"exists=TRUE");
                }
  }

我的日志显示了此结果:

 CustomeDateArray at Index1=06
 CustomeDateArray at Index2=2012

 newDateArray at Index1=06
 newDateArray at Index2=2012

如果我的if条件为真,那么控件应该进入内部并打印exists=TRUE 但我无法看到exists=TRUE控件不在里面。

有什么问题?

我们将不胜感激。

2 个答案:

答案 0 :(得分:3)

for (int i=0; i<[CustomeDateArray count]; i++)
  {
          if (([[CustomeDateArray objectAtIndex:1] isEqual:[newDateArray objectAtIndex:1]]) && ([[CustomeDateArray objectAtIndex:2] isEqual:[newDateArray objectAtIndex:2]]))        
                {
                    exists=TRUE;
                    NSLog(@"exists=TRUE");
                }
  }

今年五月帮助你 快乐编码: - )

答案 1 :(得分:1)

好吧,我在你的代码中看到了一些问题:

  1. 为什么要在CustomDateArray(for循环)中循环,而你没有使用索引“i”? (这与具体问题无关,只是检查您的代码是否有拼写错误!)

  2. 更具体的问题:NSArray包含Obj-C中的对象和对象是指针,所以你的“==”只是比较指针。这意味着:

  3. if([CustomDateArray objectAtIndex:1]==[CustomDateArray objectAtIndex:2]) ...

    对应于:

    id obj1 = [CustomDateArray objectAtIndex:1];
    id obj2 = [CustomDateArray objectAtIndex:2];
    if(obj1==obj2) ...
    

    只有当obj1和obj2指向同一个地址时,“if”才会返回true,因此它们是完全相同的对象。但如果检查的目的是知道这两个日期是否相同,那么您应该使用NSDate特定的比较方法:

    
    NSDate *d1 = [CustomDateArray objectAtIndex:1];
    NSDate *d2 = [CustomDateArray objectAtIndex:2];
    if([d1 isEqualToDate:d2]) ...
    

    相反,如果对象是字符串,则应使用“isEqualToString:”方法。