Pregunta sobre cocoa-touch, objective-c, iphone – No se encontró el método de instancia '-jsonValue' (el tipo de retorno por defecto es 'id')

1

Tengo un problema en la siguiente declaración.

<code> NSArray *feedsData = [strFeedsResponse JSONValue];
</code>
que error recibes? Hector
Cual es el tipo destrFeedsResponse? Mejora un poco tu pregunta. Ondrej Peterka

Tu respuesta

6   la respuesta
0

prueba de esta manera ...

<code>NSArray* latestentry = (NSDictionary*)[responseString JSONValue];
</code>
0

quí viene porqueJSONValue La función no se encuentra.
Asegúrese de haber incluido los archivos de encabezado json en los que llama a esta función.

1

strFeedsResponse no es REALMENTE una instancia de una NSString. Tal vez sea nulo o se haya iniciado con un valor incorrecto. Puede agregar un punto de interrupción a su código para verificar el valor que está almacenado en strFeedsResponse antes de llamar a JSONValue.

No ha importado correctamente el marco JSON que está utilizando en su clase. Necesita agregar el encabezado JSON a su clase.

2

strFeedsResponse es una instancia deNSString. No existe un método tal comoJSONValue enNSString. Necesitas NSStringcategoría y agrega elJSONValue método allí.

Puedes usar por ejemploSBJson bibliotecahttps://github.com/stig/json-framework/, que contiene el encabezado NSString + SBJson.h, que agrega elJSONValue Método para la NSString.

Este encabezado debe ser importado en el archivo de origen donde desea utilizar elJSONValue método:

<code>#import NSString+SBJSON.h
</code>

Más sobre categorías por ejemplo aquí:http://macdevelopertips.com/objective-c/objective-c-categories.html

0
<code> NSArray *feedsData = [[strFeedsResponse JSONValue] mutableCopy];
</code>

O use esta línea también NSArray * feedsData = (NSArray *) [strFeedsResponse JSONValue]; Prakash
@Pradeep que es que? yoozer8
el mismo problema... Pradeep
1

El motivo del error es que la versión actual de SBJson no parece contener la categoría NSString "NSString + SBJSON.h" mencionada por un póster anterior. Por lo tanto, puede escribir su propia cuenta o simplemente usar la clase SBJsonParser directamente ("dirección" es solo una cadena NSS que contiene algo como "24 Elm Street, Yourtown, New Mexico"):

<code>NSString     *esc_addr       = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString     *req            = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
NSString     *response       = [NSString stringWithContentsOfURL: [NSURL URLWithString: req] encoding: NSUTF8StringEncoding error: NULL];
SBJsonParser *parser         = [[SBJsonParser alloc] init];
NSDictionary *googleResponse = [parser objectWithString:response];
</code>

¡Aclamaciones!

Preguntas relacionadas