该应用程序从服务器接收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是否有一些缺失字段?
答案 0 :(得分:1)
您可以在同一if-let
声明中使用optional chaining,optional binding和conditional 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
分支上