【发布时间】:2014-12-18 12:18:31
【问题描述】:
我的字典总是零,想知道为什么会这样。 我的代码:
var dic = [NSDate : MCACalendar]?()
dic?[currentDate!] = calendar
【问题讨论】:
标签: ios swift dictionary null
我的字典总是零,想知道为什么会这样。 我的代码:
var dic = [NSDate : MCACalendar]?()
dic?[currentDate!] = calendar
【问题讨论】:
标签: ios swift dictionary null
@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太明显了,不需要再解释了:)
【讨论】:
似乎[NSDate : MCACalendar]?() 失败并返回nil。您可能想使用:
var dic = [NSDate : MCACalendar]?([:])
或
var dic: [NSDate : MCACalendar]? = [:]
【讨论】:
nil 的内容。崩溃的线路是什么?
currentDate 是nil。