28

我用这段代码比较了两个 NSNumber 对象,但它从未通过 if 条件。

listItems = [appDelegate.productStatus componentsSeparatedByString:@","];


for (int i=0;i<[appDelegate.productArray count]; i++)
{

    for (int j=0; j<[listItems count]; j++) 
    {
        number=[NSNumber numberWithInt:[[listItems objectAtIndex:j] intValue]];
        NSLog(@"number %@",number);
        productObject=[appDelegate.productArray objectAtIndex:i];           
        NSLog(@"%@,%@",productObject.pid,number);
        if (productObject.pid == number) 
        {
            NSLog(@"BUY it!!!");
            [purchasArray addObject:productObject];
        }

    }
}

怎么了?

4

4 回答 4

50

我的建议是将其比较为

if([productObject.pid intValue] == [number intValue])
{
 NSLog(@"BUY it!!!");
        [purchasArray addObject:productObject];
}

干杯。

我会避免对象比较

于 2012-05-03T09:30:52.947 回答
30

更改以下代码..

if ([productObject.pid isEqualToNumber number]) 
    {
        NSLog(@"BUY it!!!");
        [purchasArray addObject:productObject];
    }

希望对你有帮助..

于 2012-05-03T09:26:58.623 回答
13

尝试比较方法而不是'=='。

if([1stNum compare:secNum] == NSOrderedSame) 
  {
      // do something
  }

现在告诉我它是否有帮助!

于 2012-05-03T09:25:03.050 回答
2

像这样使用我的东西这对你有帮助

NSNumber *n=[[NSNumber alloc]init];
if([n isEqualToNumber:somenumber])
 {
 }
于 2012-05-03T09:27:50.587 回答