– :在将JSON页parsing为UITableView时发送到实例0x8943940的无法识别的select器

我已经通过很多链接,幸运的是我有很多类似的链接,但没有任何工作。

我的数组在Output中使用NSLog()显示。

products = ( { cid = 1; name = "hello world"; }, { cid = 2; name = "It is an array"; }, { cid = 3; name = "error error"; }, { cid = 4; name = "OMG! still same"; }, { cid = 5; name = "any help"; ... ... }, { cid = 130; name = "How is the work going on."; }, { cid = 131; name = "Had a nice lunch"; } ); success = 1 

代码parsingJSON,其中“新闻”是一个数组variables..

  - (void)connectionDidFinishLoading:(NSURLConnection *)connection { [UIApplication sharedApplication].networkActivityIndicatorVisible=NO; news = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; NSLog(@"Feeds...%@",news); [myTableView reloadData]; } 

代码显示表行,这里在“新闻”值正在显示NSLog(); NSDictionary出现错误。

 -(UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"=====%@====",news); NSDictionary *myDict = [news objectAtIndex:indexPath.row]; NSArray *myArray = [myDict objectForKey:@"name"]; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"]; if (cell==nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"]; } for (NSString *str in myArray) { cell.textLabel.text = str; } return cell; 

}

我无法find我在这里失踪..,请帮助我。

先谢谢你。

你的JSON结构是这样的:

Dictionary – > Array – > Object(Dictionary)。

所以你需要做的是:

  1. 使用关键product从字典中提取数组
  2. 使用index从数组中提取对象(Dictionary)
  3. 使用密钥name从字典对象中获取name

而不是这个:

 NSDictionary *myDict = [news objectAtIndex:indexPath.row]; NSArray *myArray = [myDict objectForKey:@"name"]; 

使用:

 NSArray *myArr = [news objectForKey:@"products"]; cell.textLabel.text = [[myArr objectAtIndex:0] objectForKey:@"name"]; 

编辑

还改变你的numberOfRowsInSection如:

 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [[news objectForKey:@"products"] count]; } 

news是一个NSDictionary ,并且一个字典没有一个方法objectAtIndex:
你必须改用[news objectForKey:...];

 [news objectAtIndex:indexPath.row]; 

NSMutabledictionary是indexpath.row,所以添加数组中的第一个新闻,并在您的代码添加数组名称,你什么也得不到

将NSDictionary放在数组中,然后在Table方法中使用它

  NSMutableArray *result=[[NSMutableArray alloc] init]; result = [googleResponse valueForKey: @"products"]; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSMutableDictionary *dt = [result objectAtIndex:indexPath.row]; } 

它会帮助你!