【问题标题】:Nil Swift Dictionary零斯威夫特字典
【发布时间】:2014-12-18 12:18:31
【问题描述】:

我的字典总是零,想知道为什么会这样。 我的代码:

var dic = [NSDate : MCACalendar]?()
dic?[currentDate!] = calendar

【问题讨论】:

    标签: ios swift dictionary null


    【解决方案1】:

    @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太明显了,不需要再解释了:)

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我收到错误:“致命错误:在展开可选值时意外发现 nil”
      • 由于错误表明您打开了 nil 的内容。崩溃的线路是什么?
      • 行:“tempDic?[currentDate!] = calendar”
      • 我猜currentDatenil
      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2017-07-22
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      相关资源
      最近更新 更多