[英]Nil Swift Dictionary
我的字典总是nil,想了解为什么会这样。 我的代码:
var dic = [NSDate : MCACalendar]?()
dic?[currentDate!] = calendar
@Kirsteins提供了解决方案-但很高兴知道为什么。
使用[NSDate : MCACalendar]?()
无法正常工作,因为它创建了[NSDate : MCACalendar]?
的实例[NSDate : MCACalendar]?
,即Optional<[NSDate : MCACalendar]>
的实例,更确切地说,是Optional<[NSDate : MCACalendar]>
的实例。 因此,初始化不会创建[NSDate : MCACalendar]
的实例。
使用无参数构造函数创建一个可选实例( Optional<T>
)的实例,将其初始化为.None
(等效于nil
),例如:
var x = Int?() // `x` is initialized as `.None`
如果将参数传递给构造函数,则使用.Some
初始化可选变量:
var x = Int?(5) // x is initialized as `.Some(5)`
这就解释了Kirsteins的解决方案。 1.解决方案编号。 2很明显,不需要进一步解释:)
似乎[NSDate : MCACalendar]?()
失败并返回nil
。 您可能要使用:
var dic = [NSDate : MCACalendar]?([:])
要么
var dic: [NSDate : MCACalendar]? = [:]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.