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

Posted

技术标签:

【中文标题】在表格视图中解析数据时获取 objectForKeyedSubscript 无法识别的选择器【英文标题】:Getting objectForKeyedSubscript unrecognized selector when parsing data in table view 【发布时间】:2014-12-30 23:18:15 【问题描述】:

我正在将包含数据的 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'

我真的很感激这个问题的解决方案或答案。

【问题讨论】:

__posts 是什么,你是如何解析 JSON 的? @MidhunMP _posts 是我所说的从 json 文件中保存文本的字典。我使用 AFJSONRequestOperation 解析它 您想要找出实际频道的行看起来很奇怪。通常你会使用返回字符串的下标通道,并将其与不同的通道类型进行比较。 【参考方案1】:

此行不正确,

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

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

看起来你想做的是,

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

【讨论】:

谢谢!完美运行!

以上是关于在表格视图中解析数据时获取 objectForKeyedSubscript 无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章

SBJSON 解析器内存泄漏

tableview 在 connectionDidFinishLoading 中重新加载数据时出错(由 json 解析)

AFNetworking 2.0 解析的数据未显示在表格视图中

QML - 获取表格视图单元格内容

我的表格视图已创建,但数组未显示在表格视图中,控制台中的所有数据都来了。请帮我解决 json 解析

重新加载 UITableview 时出现问题..!