Pergunta sobre objective-c, iphone, cocoa-touch – O método de instância '-jsonValue' não foi encontrado (o tipo de retorno padrão é 'id')

1

Eu tenho problema na seguinte declaração.

<code> NSArray *feedsData = [strFeedsResponse JSONValue];
</code>
qual erro você recebe? Hector
Qual é o tipo destrFeedsResponse? Melhore sua pergunta um pouco. Ondrej Peterka

Sua resposta

6   a resposta
0

Este erro geralmente vem quando o método não é encontrado. Aqui vem porqueJSONValue função não é encontrada.
Por favor, certifique-se de ter incluído os arquivos de cabeçalho json nos quais você está chamando esta função.

0

Se você estiver usando um webservice, forneça o URL para isso.

tente assim ...

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

Uma de duas coisas está acontecendo:

strFeedsResponse não é realmente uma instância de um NSString. Talvez seja nulo ou tenha sido iniciado com um valor incorreto. Você pode adicionar um ponto de interrupção ao seu código para verificar o valor armazenado em strFeedsResponse antes de chamar JSONValue nele.

Você não importou corretamente a estrutura JSON que está usando em sua classe. Você precisa adicionar o cabeçalho JSON à sua turma.

1

Espero que isso ajude os futuros pesquisadores sobre esse erro ...

A razão para o erro é que a versão atual do SBJson parece não conter a categoria NSString "NSString + SBJSON.h" referida por um pôster anterior. Assim, você pode facilmente escrever o seu próprio, ou apenas usar a classe SBJsonParser diretamente ("endereço" é apenas um NSString contendo algo como "24 Elm Street, Yourtown, Novo México"):

<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>

Felicidades!

2

eu presumostrFeedsResponse é uma instância deNSString. Não existe um método comoJSONValue emNSString. Você precisa de NSStringcategoria e adicione oJSONValue método lá.

Você pode usar por exemploSBJson bibliotecahttps://github.com/stig/json-framework/, que contém o cabeçalho NSString + SBJson.h, que adiciona oJSONValue método para NSString.

Esse cabeçalho deve ser importado no arquivo de origem em que você deseja usar oJSONValue método:

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

Mais sobre categorias por exemplo aqui:http://macdevelopertips.com/objective-c/objective-c-categories.html

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

Use esta linha, será útil para você ..

@Pradeep qual é o quê? yoozer8
mesmo problema... Pradeep
Ou use esta linha também NSArray * feedsData = (NSArray *) [strFeedsResponse JSONValue]; Prakash

Perguntas relacionadas