– :在将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)。
所以你需要做的是:
- 使用关键
product
从字典中提取数组 - 使用
index
从数组中提取对象(Dictionary) - 使用密钥
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]; }
它会帮助你!