2012-05-03 17 views
23

Ho usato questo codice per confrontare due oggetti NSNumber, ma non ha mai superato la condizione if.Confronto di due oggetti 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]; 
     } 

    } 
} 

Cosa c'è che non va?

+1

Provare con isEqual istantaneo di ==. – vishiphone

risposta

44

mio sugestion è quello di confrontare it

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

evviva.

Eviterei il confronto degli oggetti

+1

right, ma [numero intValue] non è necessario, perché il numero è stato creato da poche righe int sopra. così potrebbe essere se ([productObject.pid intValue] == [[listItems objectAtIndex: j] intValue]) –

+0

Grazie. il suo funzionamento – USK

+1

Saad: dovresti modificare/aggiungere commenti alla mia risposta piuttosto che copiarlo – Nit

13

Prova confrontare il metodo invece di "==".

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

Dimmi se ora aiuta!

+0

viene errore: - [NSCFString isEqualToNumber:]: selettore non riconosciuto inviato all'istanza 0x753e5e0 ' – USK

+0

Ok ora controlla il mio codice modificato e dimmi cosa succede! – Deviator

27

Cambio codice seguente ..

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

Speranza, questo vi aiuterà a ..

+1

Questa è la migliore risposta. – GoldenJoe

1

Usa come questo mi cosa questo sarà utile per voi

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

ha mostrato questo erro - [NSCFString isEqualToNumber:]: selettore non riconosciuto inviato all'istanza 0x753e5e0 ' – USK

+0

ok Quindi sei sicuro che entrambi i lati sono numeri? – vishiphone

+0

Perché non so qual'è il tuo prodottoObject.pid.per confrontare entrambi dovrebbe essere il numero quindi controlla quello. – vishiphone