未找到实例方法'-jsonValue'(返回类型默认为'id')

时间:2012-04-30 07:16:49

标签: iphone objective-c cocoa-touch

我在以下声明中遇到了问题。

 NSArray *feedsData = [strFeedsResponse JSONValue];

6 个答案:

答案 0 :(得分:2)

我认为strFeedsResponseNSString的一个实例。 JSONValue中没有NSString这样的方法。您需要NSString 类别并在那里添加JSONValue方法。

您可以使用例如 SBJson https://github.com/stig/json-framework/,其中包含NSString + SBJson.h标头,它为NSString添加了JSONValue方法。

此标头必须在要使用JSONValue方法的源文件中导入:

#import NSString+SBJSON.h

有关类别的更多信息,例如:http://macdevelopertips.com/objective-c/objective-c-categories.html

答案 1 :(得分:1)

正在发生以下两件事之一:

  1. strFeedsResponse实际上不是NSString的实例。也许它是null或者它是以不正确的值启动的。您可以在代码中添加断点,以便在调用JSONValue之前检查存储在strFeedsResponse中的值。

  2. 您尚未正确导入正在使用的JSON框架。您需要将JSON标头添加到您的班级。

答案 2 :(得分:1)

希望这可以帮助未来的搜索者解决这个错误...

错误的原因是当前版本的SBJson似乎不包含早期海报所提到的NSString类别“NSString + SBJSON.h”。所以,你可以轻松编写自己的,或者直接使用SBJsonParser类(“地址”只是一个包含类似“24 Elm Street,Yourtown,New Mexico”的NSString):

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

干杯!

答案 3 :(得分:0)

 NSArray *feedsData = [[strFeedsResponse JSONValue] mutableCopy];

使用此行,它对您有用..

答案 4 :(得分:0)

当找不到方法时,通常会出现此错误。这是因为找不到 JSONValue 功能。
请确保您在调用此函数时包含了json头文件。

答案 5 :(得分:0)

如果您使用的是网络服务,请提供该网址。

试试这个......

NSArray* latestentry = (NSDictionary*)[responseString JSONValue];