我已在我的应用程序中向服务器发出请求.并发布了类似的数据.服务器端正在等待所有参数,即使它们为零.但我无法在字典中添加零值.
var postDict = Dictionary<String,AnyObject>
postDict[pass]=123
postDict[name]="ali"
postDict[surname]=nil // dictionary still has only pass and name variables.
有没有办法给字典增加零值?
我已在我的应用程序中向服务器发出请求.并发布了类似的数据.服务器端正在等待所有参数,即使它们为零.但我无法在字典中添加零值.
var postDict = Dictionary<String,AnyObject>
postDict[pass]=123
postDict[name]="ali"
postDict[surname]=nil // dictionary still has only pass and name variables.
有没有办法给字典增加零值?
如何为Swift Dictionary添加
nil
个值?
基本上就像你给字典添加任何其他值一样.你首先需要一本字典,它的值类型可以保存你的值.类型AnyObject
不能有值nil
.因此,[String : AnyObject]
类型的字典不能有nil
值.
如果字典的值类型是可选的,比如[String : AnyObject?]
,那么它可以容纳nil
个值.例如
let x : [String : AnyObject?] = ["foo" : nil]
如果您想使用下标语法来分配元素,这有点棘手.注意,[K:V]
类型的下标有V?
类型.可选的是,当您取出它时,指示是否有该键的条目,如果有,则指示值;当你把它放进go 时,它允许你设置一个值或删除条目(通过分配nil
).
这意味着对于[String : AnyObject?]
型字典,下标是AnyObject??
型.同样,当您将值放入下标时,"外部"选项允许您设置值或删除条目.如果我们只是写
x["foo"] = nil
编译器推断为AnyObject??
类型的nil
,外部可选,这意味着删除键"foo"
的条目.
为了将键"foo"
的值转换为AnyObject?
值nil
,我们需要传入一个非nil
外部可选项,其中包含一个nil
值的内部可选项(AnyObject?
类型).为了做到这一点,我们可以
let v : AnyObject? = nil
x["foo"] = v
或
x["foo"] = nil as AnyObject?
任何表明我们有AnyObject?
的nil
,而不是AnyObject??
的东西.