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)`