即使在展开时也得到 "Optional(<data value>)" 的值
Getting a value of "Optional(<data value>)" even when unwrapping
我正在尝试为 Alamofire 请求初始化参数。出于某种原因,其中一个参数的值总是以“Optional()”的值结束,即使我正在展开它也是如此。
这是我试过的...
var params : [String : Any] = [:]
params["facility_id"] = facility.facilityId ?? 0
if facility.email != nil {
params["email"] = facility.email!
}
if let url = facility.facebookUrl {
params["facebook_url"] = url
}
params["facebook_url"]
的值最终为 "Optional(Facebook.com)"
我试过了(只是为了测试)
params["facebook_url"] = facility.facebookUrl!
而且我的值中仍然有“可选(”这个词。
如何让“Optional()”消失?
当您访问字典时,它 returns 其值类型是可选的,因为它不知道运行时某个键是否在字典中可用。如果密钥存在,则返回它的值,但如果不存在,则我们得到 nil 值。
使用可选绑定访问展开的值:
if let url = params["facebook_url"] {
print(url) // facebook url
}
如果双重可选解包:
if let urlOptional = params["facebook_url"], let value = urlOptional {
print(value) // facebook url
}
注意:还要检查设置 'facebook_url' 键值的来源。
我正在尝试为 Alamofire 请求初始化参数。出于某种原因,其中一个参数的值总是以“Optional()”的值结束,即使我正在展开它也是如此。
这是我试过的...
var params : [String : Any] = [:]
params["facility_id"] = facility.facilityId ?? 0
if facility.email != nil {
params["email"] = facility.email!
}
if let url = facility.facebookUrl {
params["facebook_url"] = url
}
params["facebook_url"]
的值最终为 "Optional(Facebook.com)"
我试过了(只是为了测试)
params["facebook_url"] = facility.facebookUrl!
而且我的值中仍然有“可选(”这个词。
如何让“Optional()”消失?
当您访问字典时,它 returns 其值类型是可选的,因为它不知道运行时某个键是否在字典中可用。如果密钥存在,则返回它的值,但如果不存在,则我们得到 nil 值。
使用可选绑定访问展开的值:
if let url = params["facebook_url"] {
print(url) // facebook url
}
如果双重可选解包:
if let urlOptional = params["facebook_url"], let value = urlOptional {
print(value) // facebook url
}
注意:还要检查设置 'facebook_url' 键值的来源。