Pasé algún tiempo hoy persiguiendo dos errores, y terminé solucionando los dos con la misma solución.Comparar NSNumber con NSInteger
Ahora que tengo la solución, esperaba aclarar un poco.
Estoy comparando un atributo de Datos principales (Número entero/NSNumber) con un Entero (ABPropertyID & ABMultiValueIdentifier).
El error estaba en esta comparación, y por extraño que parezca, solo apareció después de que había matado la aplicación (desde la bandeja de fondo), la volvió a abrir y ejecutaba el mismo proceso que incluía la comparación. De todas formas ...
Esto es lo que dejó de funcionar después de un reinicio:
if (myNumber.aProperty == [NSNUmber numberWithInt:anInteger]) { /* do stuff here */ }
Y éstas son las dos soluciones, que hasta el momento, están trabajando perfectamente:
if ([myNumber.aProperty integerValue] == anInteger) {/* do stuff here */ }
if ([myNumber.aProperty isEqualToNumber:[NSNumber numberWithInt:anInteger]]) { /* do stuff here */ }
Para mí, todos parecen idénticos. Siempre estoy convirtiendo el NSNumber en un integerValue o convirtiendo el entero en un NSNumber.
¿Alguna idea?
Eso tiene sentido.Sin embargo, una cosa que era extraña, y mencioné brevemente en mi publicación, es que la comparación estaba funcionando cuando ejecuté mi aplicación por primera vez. Fue solo después de que maté mi aplicación, la volví a abrir y ejecuté la aplicación a través de la comparación, que empecé a ver resultados inesperados. Sin saber nada sobre mi aplicación o ver ningún código, ¿podría adivinar por qué estaba ocurriendo esto? – djibouti33
@ djibouti33: No es una pista ... (y al decir esto estoy señalando su imprevisibilidad también :) – BoltClock