【发布时间】:2014-08-15 04:28:04
【问题描述】:
在 Swift 中,NSJSONSerialization.JSONObjectWithData 使用 Optional(<null>) 作为 JSON 中的 null 值。是否可以告诉解析使用nil 代替(即,删除具有null 值的字段,因为Swift Dictionary 不允许nil 值)?
【问题讨论】:
-
顺便说一句,
Optional(<null>)实际上是什么?包裹在可选项中的值的类型是什么? -
我不认为它给你一个
Dictionary对象,它给你一个NSDictionary不是吗?由于他们无法存储nil,因此您的要求无法完成。 -
是的,Swift 将
NSDictionary连接到[NSObject: AnyObject]。由于Dictonary不能存储nil,所以他们使用NSNull -
Dictionary无法存储nil。当您将nil分配给一个字段时,您可以有效地删除该字段。var a = ["x": 1, "y": 2]; a["x"] = nil; println(a.count)打印1。我使用 xcode6-beta5。 -
@Ethan:不正确。如果字典的值类型是可选类型,则字典可以存储
nil:var a: [String: Int?] = ["x": 1, "y": 2]; a["x"] = (nil as Int?); println(a.count)打印2。 (请注意,我不做a["x"] = nil,因为下标运算符采用值类型的可选项,在本例中为Int??。如果是nil,则意味着删除键;如果不是@987654348 @它存储它。但是如果你只写nil,它将被解释为Int??的nil。(nil as Int?)强制它转换为非nilInt??包含nil@987654356 @.)