[swift-users] Dictionary with optional values

Marco S Hyman marc at snafu.org
Wed May 18 13:16:40 CDT 2016


> On May 18, 2016, at 11:03 AM, Artyom Goncharov via swift-users <swift-users at swift.org> wrote:
> 
> Yes, of course I can use API method but this kind of behaviour for subscript operator seems inconsistent(or even magical) to me because it is possible to initialise a dictionary with nil without casting it. Though nil is a special case it is still a value in the set of all values of a T? type, am I wrong?

There are a few ways to assign nil to a dictionary entry.  First of all

dictionary[“key”] = nil

always removes “key" from dictionary.  To assign a nil value use one of:

dictionary[“key”] = Optional(nil)
dictionary[“key”] = .Some(nil)
dictionary[“key”]? = nil

That last only works if “key” already exists in the dictionary, i.e. you are replacing the existing value.  The first two will add a dictionary entry if necessary.

I suspect now that you’ve been bitten by this you will remember it forever :)

Marc


More information about the swift-users mailing list