2012-05-03 17 views
23

2つのNSNumberオブジェクトを比較するのにこのコードを使用しましたが、if条件を渡すことはありませんでした。2つの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

あなたのために私の暗示は、比較することですそれと同様に

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

歓声。

私はオブジェクトの比較を避けるでしょう

+1

右ですが、numberは上の数行から作成されるため、[number intValue]は必要ありません。 ([productObject.pid intValue] == [[listItems objectAtIndex:j] intValue]) –

+0

ありがとうございます。その作業 – USK

+1

サアド:あなたはそれをコピーするよりも私の答えに編集/コメントを追加する必要があります – 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

これはこのエラーを示しています - [NSCFString isEqualToNumber:]:認識できないセレクタがインスタンスに送信されました0x753e5e0 ' – USK

+0

ok両サイドが数字であることは確かですか? – vishiphone

+0

私はあなたのproductObject.pid.forが何であるかを知っていないので、両方を数値にする必要があります。 – vishiphone

関連する問題