0

我正在尝试用我相信的 NSDictionary 填充动态表格视图的单元格,这是我填充表格视图的方法:

- (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'

我不确定这意味着什么或如何解决它。

4

1 回答 1

2

看起来您的字典实际上是一个字典数组,每个字典都有键 @"Title"。

您现在正在做的是获取每个元素的字符串并尝试获取 indexPath.row 的索引,但字符串没有该方法。

由于您只需要索引 indexPath.row 处的对象,因此可以将整个 for 循环替换为以下代码行:

 cell.title.text = [[results objectAtIndex:indexPath.row] objectForKey:@"title"];

此外,正如 Nicholas Hart 所说,为了大大提高性能,您应该在收到 json 对象时将以下几行放入代码中,以便它只执行一次,并使结果成为可以从tableView 的委托方法:

NSData *jsonData = self.responseFromServer;

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSArray *results = [json objectForKey:@"myData"];
于 2013-07-29T19:28:37.793 回答