我试图用NSDictionary填充动态tableview的单元格我相信,这是填充tableview的方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
ResultsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSData *jsonData = self.responseFromServer;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSArray *results = [json objectForKey:@"myData"];
for (NSDictionary *item in results) {
cell.title.text =[[item objectForKey:@"title"]objectAtIndex:indexPath.row];
}
// Configure the cell...
return cell;
}
如果我有
cell.title.text =[item objectForKey:@"title"];
几乎可以,但我的所有标题都是一样的。但是目前我是如何得到错误的:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x7612940'
并且我不确定它意味着什么或如何解决它。
答案 0 :(得分:2)
看起来你的词典实际上是一个字典数组,每个字典都有一个键@“Title”。
您现在正在做的是获取每个元素的String并尝试获取indexPath.row的索引,但字符串没有该方法。
由于您只需索引indexPath.row处的对象,因此可以使用以下代码行替换整个for循环:
cell.title.text = [[results objectAtIndex:indexPath.row] objectForKey:@"title"];
另外,正如尼古拉斯·哈特所说,为了提高性能,你应该在接收到json对象时在代码中添加以下行,这样它只进行一次,并使结果成为可以是的实例变量从tableView的委托方法访问:
NSData *jsonData = self.responseFromServer;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSArray *results = [json objectForKey:@"myData"];