Pregunta

Estoy trabajando en una aplicación que habla con el servicio web REST. El analizador JSON que estoy usando es SBJSON. Existe este servicio web en el lado del servidor devuelve un beana. Este frijol contiene un beanb. Parte del JSON que obtuve del lado del servidor es así cuando hay múltiples frijoles:

        BeanB =             
        (
            {
                key = 12;
                name = test2bbb;
            },
            {
                key = 11;
                name = test2ttt;
            }
        );

Cuando solo hay un frijol, se ve así:

        BeanB =             
        {
            key = 10;
            name = test3;
        };

Al pasar por el analizador SBJSON, obtuve un diccionario cuando solo se devolvió un Beanb, y obtuve una matriz cuando hay más de un Beanb devuelto. El código que solía recibir los frijoles es:

        NSArray/NSDictionary *BeanB = [BeanADic objectForKey:@"beanB"];

El problema es que no puedo predecir lo que voy a obtener del lado del servidor. ¿Hay alguna forma de probar el tipo de retorno?

¿Fue útil?

Solución

Este es un caso en el que es apropiado verificar la clase del valor devuelto.

id beanB = [beanADic objectForKey:@"tagBeans"];
if ([beanB isKindOfClass:[NSDictionary class]]) {
  NSDictionary *beanDic = beanB;
  ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top