在表视图中解析数据时获取objectForKeyedSubscript无法识别的选择器

时间:2014-12-30 23:18:15

标签: ios objective-c json uitableview

我正在将包含数据的json文件解析为具有不同自定义单元格的表视图。 在json文件中,我有不同类型的通道,如下所示:

[
  {
  text: "Text 1", 
  channel: "Channel1"
  },
  {
  text: "Text 2", 
  channel: "Channel2"
  },
  {
  text: "Text 3", 
  channel: "Channel3"
  }
]

现在,当我尝试根据它的通道类型选择3个不同的自定义表格视图时,我收到一个奇怪的错误。以下是我的表现:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSDictionary *post = _posts[indexPath.row];

    if (post[@"channel"][@"Channel1"]) {
        Cell1 *cell = (Cell1*)[tableView dequeueReusableCellWithIdentifier:@"cell1" forIndexPath:indexPath];
        // Configuring the cell...
        return cell;
    } else if (post[@"channel"][@"Channel2"]) {
        Cell2 *cell = (Cell2*)[tableView dequeueReusableCellWithIdentifier:@"cell2" forIndexPath:indexPath];
        // Configuring the cell...
        return cell;
    } else if (post[@"channel"][@"Channel3"]) {
        Cell3 *cell = (Cell3*)[tableView dequeueReusableCellWithIdentifier:@"cell3" forIndexPath:indexPath];
        // Configuring the cell...
        return cell;
    } else {
    }
}

但是当我在模拟器上运行它时它会崩溃并给我这个错误信息:

-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa8bbf61540
2014-12-31 00:06:54.397 App[12767:2571748] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa8bbf61540'

我真的很感激解决方案或答案。

1 个答案:

答案 0 :(得分:2)

此行不正确,

if (post[@"channel"][@"Channel1"]) {

post [@“channel”]返回一个字符串,例如“Channel1”,因此你不能在其上使用另一个下标([@“Channel1”]) - 这就是你得到那个错误的原因。

看起来你想要做的是,

if ([post[@"channel"] isEqualToString:@"Channel1"]) {