确定JSON中的“nil”值

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

 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是否有一些缺失或无字段?

您可以在相同的if-let语句中使用可选的链接 , 可选的绑定和条件转换 :

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

它是这样工作的:

  • package["store"]?["cover"]如果package["store"]或者package["store"]["cover"]为零,则返回nil
  • 有条件的转换as? String 如果左边的expression式不是as? String返回nil
  • 最后, if-let构造将填充实际string的cover ,或者如果不匹配,则会在else分支上进行