Primero confieso mi ignorancia, he aprendido todo lo que sé sobre Objective-C en los pocos meses que he estado trabajando en mi proyecto. También me parece totalmente frustrante cómo Objective-C parece complicar lo que serían simples asuntos en cualquier otro idioma con el que haya trabajado. Esta pregunta es un caso puntual ...Cómo verificar el valor nulo en NSNumber
En la primera ejecución, mi aplicación descarga un montón de JSON que utiliza para llenar una tienda CoreData. Utilizo una biblioteca Obj-C/JSON (CJSONDeserializer) para convertir el JSON en NSArrays. En la descarga JSON para una entidad CoreData, hay un campo que contiene un número ("show_id":2
) que identifica el campo relacionado en otra entidad, si hay uno o nulo ("show_id":null
) en caso contrario. En la tramitación de este campo le asigno a un NSNumber usando ...
NSNumber *shoIndex = [[item objectForKey:typeKey] objectForKey:@"show_id"];
que luego tratar de comprobar que tengo un número válido antes de intentar a buscar & enlace al registro relacionado con el fin de no hacer el proceso donde hay desperdicio no es un registro relacionado.
Interrogar shoIndex
con ...
NSLog(@"shoIndex: %i, %@, %@", shoIndex, shoIndex, [shoIndex description]);
Da ...
shoIndex: 19590600, <null>, <null>
donde el valor JSON fue null
& ...
shoIndex: 228300880, 51, 51
lo contrario.
Hasta ahora la única prueba con éxito que he hecho es con ...
if (![[shoIndex description] isEqualToString:@"<null>"]) {
¿Puede alguien sugerir una mejor manera?
actualización ...
Visto de otro modo shoIndex
se asigna como NSNumber
que a veces contiene un valor NSString
@"<null>"
. ¿Obj-C tiene algo así como un operador isa
que podría utilizar para verificar el tipo de contenido de shoIndex
?
TIA, Pedro.
Qué le hace pensar que el objeto es una instancia de 'NSNumber'? – jlehr