Ios 零速字典

Ios 零速字典,ios,swift,dictionary,null,Ios,Swift,Dictionary,Null,我的字典总是零,我想知道为什么会发生这种情况。 我的代码: 似乎[NSDate:MCACalendar]?()失败并返回nil。您可能希望使用: var dic = [NSDate : MCACalendar]?([:]) 或 @Kirsteins提供了解决方案,但知道原因很好 使用[NSDate:MCACalendar]?()不能像您预期的那样工作,因为它创建了[NSDate:MCACalendar]?的实例,即可选的实例,更准确地说,是可选的实例。这样初始化就不会创建[NSDate:MCA

我的字典总是零,我想知道为什么会发生这种情况。 我的代码:


似乎
[NSDate:MCACalendar]?()
失败并返回
nil
。您可能希望使用:

var dic = [NSDate : MCACalendar]?([:])


@Kirsteins提供了解决方案,但知道原因很好

使用
[NSDate:MCACalendar]?()
不能像您预期的那样工作,因为它创建了
[NSDate:MCACalendar]?
的实例,即可选的实例,更准确地说,是
可选的实例。这样初始化就不会创建
[NSDate:MCACalendar]
的实例

使用无参数构造函数创建可选(
optional
)的实例会将其初始化为
.None
(相当于
nil
),例如:

var x = Int?() // `x` is initialized as `.None`
如果将参数传递给构造函数,则使用
初始化可选变量

var x = Int?(5) // x is initialized as `.Some(5)`

这就解释了Kirsteins的第一个解决方案。解决方案2非常明显,不需要进一步解释:)

我得到了错误:“致命错误:在展开可选值时意外发现了nil”,因为错误表明您展开了
nil
的内容。哪一行崩溃了?那一行:“tempDic?[currentDate!]=calendar”我猜
currentDate
nil
var x = Int?() // `x` is initialized as `.None`
var x = Int?(5) // x is initialized as `.Some(5)`