我正在执行以下代码:
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的有效负载,我不确定这里的错误。有什么想法吗?
答案 0 :(得分:1)
首先,你说dicc是一个[String:String]字典,但你的createByDicc不是一个字符串,它是另一个字典。所以你的dicc应该是[String:Any]。
其次,永远不要强行打开你的选项是一个很好的做法。尝试执行if let
或guard
语句并保存值或仅使用Nil Coalescing:self.message ?? ""