在展开Optional值时意外发现nil

时间:2018-03-19 21:07:35

标签: ios swift xcode alamofire

我正在执行以下代码:

let createByDicc = [
        "nickname" : self.createdBy?.nickname,
        "avatar" : self.createdBy?.avatar,
        "id" : self.createdBy?.id
        ] as! [String : String]

    let dicc = [
        "channelId" : self.channelId!,
        "createBy" : createByDicc,
        "message" : self.message!,
        "type" : "message",
        "replyTo" : "nmartello"
        ] as! [String : String]

我很肯定我使用的所有变量都不是null(self.createdBy?.nickname等已经分配了一个字符串)。如果我注释掉

"createBy" : createByDicc'

它工作得很好,但如果没有,我会在打开一个可选值时意外地发现nil 。我需要在Dictionary中使用这个词典来获取我需要使用Alamofire调用的WS的有效负载,我不确定这里的错误。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先,你说dicc是一个[String:String]字典,但你的createByDicc不是一个字符串,它是另一个字典。所以你的dicc应该是[String:Any]。

其次,永远不要强行打开你的选项是一个很好的做法。尝试执行if letguard语句并保存值或仅使用Nil Coalescing:self.message ?? ""