【问题标题】:App crash after '' 后应用程序崩溃
【发布时间】:2012-04-10 08:35:05
【问题描述】:

' 出现在我正在解析的JSON 代码的标题中时,我的应用程序崩溃了。

这一行正在加载标题的:

[[cell textLabel] setText:[item objectForKey:@"title"]];

JSON:

 NSString *jsonString = [NSString 
                            stringWithContentsOfURL:[NSURL URLWithString:@"**test.php"] 
                            encoding:NSStringEncodingConversionAllowLossy
                            error:nil];
    // Create parser
    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *results = [parser objectWithString:jsonString error:nil];
    parser = nil;
    // Set tableData
    [self setTableData:[results objectForKey:@"items"]];

崩溃:

tableData   NSArray *   0x00000001

2012-04-10 10:29:11.446 *[21222:f803] -[NSNull isEqualToString:]: 无法识别的选择器发送到实例 0x146ace8 2012-04-10 10:29:11.447 *[21222:f803] * 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[NSNull isEqualToString:]: 无法识别的选择器发送到实例 0x146ace8' * 第一次抛出调用栈:(0x13d4022 0x1565cd6 0x13d5cbd 0x133aed0 0x133acb2 0x15e0ff 0x2b10 0xb8c54 0xb93ce 0xa4cbd 0xb36f1 0x5cd21 0x13d5e42 0x1d8c679 0x1d96579 0x1d1b4f7 0x1d1d3f6 0x1db81ce 0x1db8003 0x13a8936 0x13a83d7 0x130b790 0x130ad84 0x130ac9b 0x12bd7d8 0x12bd88a 0x1e626 0x1ded 0x1d55) 终止调用抛出异常(lldb)

【问题讨论】:

    标签: objective-c xcode json cocoa-touch uitableview


    【解决方案1】:

    该崩溃信息的关键部分是:unrecognized selector sent to instance ... [NSNull isEqualToString:]

    看起来您的 JSON 包含 null 某处您期望一个字符串。稍后,您可能会在 setTableData: 内部执行以下操作:

    NSString* whatever = [items objectForKey:@"whatever"];
    if([whatever isEqualToString:@"hello"]){
        ...
    }
    

    这会崩溃,因为whatever 变量包含NSNull,而不是您所期望的NSString

    【讨论】:

    • 哦哈哈对不起! {"title":null,"description":""} 需要再次搜索我的眼镜!谢谢哈哈!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2014-10-03
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多