responseData = [[NSMutableData data] retain];
NSString *requestString = [NSString stringWithFormat:@"http://api.yelp.com/business_review_search?term=&lat=%f&long=%f&radius=10&limit=20&ywsid=XXXXXXXXXX&category=%@",[[ListofLat objectAtIndex:i] floatValue], [[ListofLong objectAtIndex:i] floatValue],appDelegate.categoryField] ;
//NSURL *url = [[NSURL alloc] initWithString:requestString];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestString]];
/* NSData *tempData =[[NSData alloc] initWithContentsOfURL:url];
NSString *Str = [[NSString alloc] initWithData:tempData encoding:NSUTF8StringEncoding];
NSLog(@"%@",Str);*/
NSURLResponse *response = nil;
NSError *error = nil;
//getting the data
NSData *newData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//json parse
NSString *responseString = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];
NSDictionary *jsonObject = [responseString JSONValue];
//Accessing JSON content
NSLog(@"message : %@", [jsonObject objectForKey:@"message"] );
NSArray *status = [jsonObject objectForKey:@"message"] ;
NSLog(@"message : %@", status );
for(NSDictionary *response in status)
{
NSString *Resptxt =[response objectForKey:@"text"];
txtStatus=[Resptxt copy];
}
if([txtStatus isEqualToString : @"OK"])
{
UIAlertView *info = [[UIAlertView alloc] initWithTitle:@"Info" message: @"The request completed without error. " delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[info show];
[info release];
}
我使用上面的代码进行json解析。当编译器出现在这一行
时NSString * Resptxt = [response objectForKey:@“text”];
然后编译器终止并发出此错误
* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [NSCFString objectForKey:]:无法识别的选择器发送到实例0x6166490'
状态包含
'message':{'code':0,'text':'OK','version':'1.1.0'}}
这有什么问题?我怎么纠正它?
答案 0 :(得分:0)
响应变量作为NSString(NSCFString)而不是NSDictionary返回。 NSString没有objectForKey方法,这就是当你调用NSString *Resptxt =[response objectForKey:@"text"];
答案 1 :(得分:0)
这看起来不像编译器遇到的错误。相反,这是您在运行应用时遇到的错误。
它表示您已将消息objectForKey:
发送到字符串实例,即响应是字符串实例。但是,此消息通常会发送到NSDictionary
的实例。
我假设JSON响应的结构与您预期的不同。特别是,它比您的代码假设更深入嵌套。
请发布完整的JSON答案,以便我们为您提供更具体的帮助。
答案 2 :(得分:0)
发生的情况是状态中的对象不是字典而是字符串。你得到的错误是当你调用objectForKey时:nscfstring没有响应它。