yat*_*dam 61 null dictionary optional 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值添加到字典?
new*_*cct 102
如何为
nilSwift Dictionary 增加价值?
基本上与向字典添加任何其他值的方式相同.您首先需要一个具有可以保存您的值的值类型的字典.类型AnyObject不能有值nil.所以类型字典[String : AnyObject]不能有价值nil.
如果您的字典值类型是可选类型[String : AnyObject?],那么它可以保存nil值.例如,
let x : [String : AnyObject?] = ["foo" : nil]
如果你想使用下标语法来分配一个元素,那就有点棘手了.请注意,类型的下标[K:V]具有类型V?.当你把它拿出来时,可选的是指示是否有该条目的条目,如果是,则表示该值; 当你把它放入时,它允许你设置一个值或删除条目(通过分配nil).
这意味着对于我们的类型字典[String : AnyObject?],下标有类型AnyObject??.同样,当您将值放入下标时,"outer"可选允许您设置值或删除条目.如果我们只是写
x["foo"] = nil
编译器推断nil为类型AnyObject??,外部可选,这意味着删除键的条目"foo".
为了将key 的值设置为值,我们需要传入一个非外部可选项,包含一个内部可选(类型)值.为了做到这一点,我们可以做到"foo"AnyObject?nilnilAnyObject?nil
let v : AnyObject? = nil
x["foo"] = v
要么
x["foo"] = nil as AnyObject?
凡是表明我们拥有nil的AnyObject?,而不是AnyObject??.
小智 25
您可以使用以下updateValue方法:
postDict.updateValue(nil, forKey: surname)
rin*_*aro 21
如此处所述,nil在字典中设置键意味着删除元素本身.
例如,如果您想null转换JSON为,则可以使用NSNull()
var postDict = Dictionary<String,AnyObject>()
postDict["pass"]=123
postDict["name"]="ali"
postDict["surname"]=NSNull()
let jsonData = NSJSONSerialization.dataWithJSONObject(postDict, options: NSJSONWritingOptions.allZeros, error: nil)!
let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)!
// -> {"pass":123,"surname":null,"name":"ali"}
| 归档时间: | 
 | 
| 查看次数: | 26167 次 | 
| 最近记录: |