2012-05-03 21 views
23

Utilicé este código para comparar dos objetos NSNumber, pero nunca pasó la condición if.Comparación de dos objetos 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]; 
     } 

    } 
} 

¿Qué pasa?

+1

Pruebe con IsEqual instante de ==. – vishiphone

Respuesta

44

Mi sugerencia es comparar como

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

aplausos.

yo evitaría la comparación de objetos

+1

a la derecha, pero [number intValue] no es necesario, ya que el número se genera a partir de unas pocas líneas arriba. por lo que podría ser si ([productObject.pid intValue] == [[listItems objectAtIndex: j] intValue]) –

+0

Gracias. su funcionamiento – USK

+1

Saad: deberías haber editado/agregado comentarios a mi respuesta en lugar de copiarlo – Nit

13

Pruebe compare método en lugar de '=='.

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

¡Dígame si ayuda ahora!

+0

viene el error: - [NSCFString isEqualToNumber:]: selector no reconocido enviado a la instancia 0x753e5e0 ' – USK

+0

Ok, ahora verifique mi código editado y dígame qué sucede. – Deviator

27
Cambio

siguiente código ..

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

Esperanza, esto le ayudará a ..

+1

Esta es la mejor respuesta. – GoldenJoe

1

uso como esta cosa que esta voluntad útil para usted

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

se muestra este error - [NSCFString isEqualToNumber:]: selector no reconocido enviado a la instancia 0x753e5e0 ' – USK

+0

bien Entonces, ¿estás seguro de que ambos lados son los números? – vishiphone

+0

Porque no sé cuál es su productoObjeto.pid.para comparar ambos debe ser número así que verifique eso. – vishiphone

Cuestiones relacionadas