Swift3 处理字典对象中的空值

Swift3 处理字典对象中的空值,swift3,xcode8,Swift3,Xcode8,我正在使用web服务获取信息。当所述信息被返回时,我将从jason收到的数据转换为dict 在转储dict对象时,某些项目的到达方式如下: ▿ (2 elements) - key: "street1" - value: <null> #4 此操作失败:无法将类型为“NSNull”(0x10fbf7918)的值强制转换为“NSString”(0x10f202c60) 数据可以有一个字符串值。所以我试着: let street1:Any = dict?["street1"] as

我正在使用web服务获取信息。当所述信息被返回时,我将从jason收到的数据转换为dict

在转储dict对象时,某些项目的到达方式如下:

▿ (2 elements)

- key: "street1"

- value: <null> #4
此操作失败:无法将类型为“NSNull”(0x10fbf7918)的值强制转换为“NSString”(0x10f202c60)

数据可以有一个字符串值。所以我试着:

let street1:Any = dict?["street1"] as Any
当我这样打印street1时 街道1:可选()

我得到以下信息 街道1:可选()

所以我的问题是:
我如何读取这些数据并知道该值为
null

您可以使用if-let进行这种类型的nil检查

请尝试以下方法:

if let street1 = dict?["street1"] as? String {
   // If this succeeds then you can use street1 in here
   print(street1)
}
更新:

var t_street1 = ""
if let street1 = dict?["street1"] as? String { 
    t_street1 = street1 
}

不需要else
t_street1
自动为空,因为您将其分配为空。

因为我需要使用稍后收集的数据(将其发送回另一个服务),所以我最后这样做:[code]var t_street1:String=”“if let street1=dict?[“street1”]as?字符串{//如果成功,那么您可以在这里使用street1 t_street1=street1}否则{t_street1=“”}是的。有没有更优雅的方式来做我以前尝试过的事情comment@JohnyDGood,检查更新的答案。考虑接受这个答案,以便其他人将来能够从中受益。
var t_street1 = ""
if let street1 = dict?["street1"] as? String { 
    t_street1 = street1 
}