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