2012-05-03 2 views
23

이 코드를 사용하여 두 NSNumber 객체를 비교했지만 if 조건을 결코 통과하지 못했습니다.두 개의 NSNumber 객체 비교

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]; 
     } 

    } 
} 

무엇이 잘못 되었나요?

+1

isEqual 인스턴트 ==를 사용해보십시오. – vishiphone

답변

44

당신에 대한 내 sugestion 비교하는 것입니다 그것으로

건배.

개체 비교를 피하십시오.

+1

맞습니다. 숫자는 위의 몇 줄 위에있는 int에서 만들어 지므로 [number intValue]는 필요하지 않습니다. 그래서 if ([productObject.pid intValue] == [[listItems objectAtIndex : j] intValue]) –

+0

고맙습니다. 그 작업 – USK

+1

Saad : 당신은 내 대답을 편집/덧붙여 야합니다. 복사하는 대신에 – Nit

13

시도 은 '=='대신 메소드를 비교하십시오.

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

지금 도움이되는지 말해주세요! 다음 코드

+0

오류가 발생했습니다 : - [NSCFString isEqualToNumber :] : 인식 할 수없는 선택기가 인스턴스로 전송되었습니다. 0x753e5e0 ' – USK

+0

이제 수정 된 코드를 확인하고 어떤 일이 발생했는지 알려주세요. – Deviator

27

변경 ..

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

희망이 당신을 도울 것입니다 ..이 나는 것 같은

+1

이것은 가장 좋은 답변입니다. – GoldenJoe

1

사용이 의지에 도움이

NSNumber *n=[[NSNumber alloc]init]; 
if([n isEqualToNumber:somenumber]) 
{ 
} 
+1

이 erro - [NSCFString isEqualToNumber :] : 인스턴스로 전송 된 인식 할 수없는 선택기 0x753e5e0 ' – USK

+0

ok 그러면 양측이 모두 숫자입니까? – vishiphone

+0

왜냐하면 나는 당신의 productObject.pid.for가 둘 다 숫자 여야한다는 것을 알고 있기 때문에 그것을 확인해야한다. – vishiphone