确定" nil" JSON中的值

时间:2015-12-29 10:28:41

标签: ios xcode swift

该应用程序从服务器接收JSON对象。对象中的某些字段可能会丢失,或者为nil。所以,我需要在计算值之前找到它们。我有一个代码片段如下:

print(package["store"]!["cover"]) //here, console output: "nil"
if ((package["store"]!["cover"]) != nil) {
    //the 'if' statment above has no effect, statment below is executed,
    // and error occurs.
    imageName = STATIC_IMAGE_URL + (package["cover"] as! String)
}

如何检测响应JSON是否有一些缺失字段?

1 个答案:

答案 0 :(得分:1)

您可以在同一if-let声明中使用optional chainingoptional bindingconditional casting

if let cover = package["store"]?["cover"] as? String {
    imageName = STATIC_IMAGE_URL + cover
} else {
    imageName = "someDefaultImage"
}

它的工作原理如下:

    如果package["store"]?["cover"]nil为,则
  • package["store"]将返回package["store"]["cover"]
  • 如果左侧的表达式不是as? String
  • ,则条件转换String返回nil
  • 最后,if-let构造将使用实际字符串填充cover,或者如果没有匹配则会在else分支上