我的字典总是为零,想了解为什么会发生这种情况。 我的代码:
var dic = [NSDate : MCACalendar]?()
dic?[currentDate!] = calendar
最佳答案
@Kirsteins 提供了解决方案 - 但很高兴知道原因。
使用[NSDate : MCACalendar]?()
无法按您的预期工作,因为它创建了 [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 很明显,不需要进一步解释:)
关于ios - 尼尔· swift 词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546454/