确定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
分支上进行