ios - 从 JSON 数据将 null 分配给 NSString 时崩溃

标签 ios objective-c json nsstring

我遇到了崩溃,我已经将范围缩小到这行代码,但我不明白如何避免它。

NSString *variantImageUrl = variantEdge[@"node"][@"image"][@"src"];

如果 src 的值为 null 应用程序崩溃并显示以下错误消息

    2017-11-21 17:23:27.023988+0800 NWMPos[3218:2124447] -[NSNull objectForKeyedSubscript:]: unrecognized selector sent to instance 0x1b2a01650
2017-11-21 17:23:27.026199+0800 NWMPos[3218:2124447] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull objectForKeyedSubscript:]: unrecognized selector sent to instance 0x1b2a01650'

只要 src 的值是一个正确的字符串,它就可以正常工作

但是我无法在赋值之前检查 null 的值,那么如何避免崩溃呢?

最佳答案

添加空值检查:

if(![variantEdge[@"node"][@"image"][@"src"] isEqual:[NSNull null]])
{
    NSString *variantImageUrl = variantEdge[@"node"][@"image"][@"src"];
}

关于ios - 从 JSON 数据将 null 分配给 NSString 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47409554/

相关文章:

iphone - 在 iPhone map 上绘制路径

json - Flutter 从复杂的 json 中获取数据

json - 直接消费json.RawMessage的打印函数

json - 从 Elasticsearch 中获取特定数据

iphone - 尝试在后台保存图像

ios - 如何在 iOS 中以编程方式将图像传递给 View Controller ?

ios - AWS AppSync 订阅 iOS 的特定设备/用户?

objective-c - 如何将 block 的结果模拟为方法参数?

ios - iOS Metal 中的透视正确纹理映射

ios - UISwipeGestureRecognizer 和 ShareExtension : Different behaviour on iOS 12. 4 和 13.0 及最新版本(错误或未记录?)