如何添加nil值到Swift字典?

前端之家收集整理的这篇文章主要介绍了如何添加nil值到Swift字典?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的应用程序中向我的服务器发出了请求。并发布数据这样的。服务器端正在等待所有参数,即使他们是零。但我不能添加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。

猜你在找的Swift相关文章