为可选变量赋值

Assigning a value to an optional variable

要设置字典值,我的做法如下。

var dic: [String:Any]?

dic = [String:Any]()

dic!["name"] = "my name"
dic!["email"] = "aaa@bbb.com"
dic!["nickname"] = "Grrrrrrrr"

我认为感叹号 (!) 是多余的。 也就是说,我想在没有'!'的情况下进行设置。

dic = [String:Any]()

dic["name"] = "my name"
dic["email"] = "aaa@bbb.com"
dic["nickname"] = "Grrrrrrrr"

简而言之,有什么方法可以给可选变量赋值吗?

我认为你应该更新你的代码,不要在你的 viewcontroller 中使用直接字典。在模型中设置可选变量。当你使用这些值时,将它与条件检查一起使用,比如 if let value = somethingOptional{}

或者在你的 API 调用函数中使用 guard 这样当你从 API

中得到空值时它永远不会更新或影响任何视图

阅读评论后,下面的解决方案可能就是您要找的。

var dic = [String: Any]() //Empty dictionary

func processResultOfAlamofire(_ result: [String: Any]?) {
    dic = result ?? [String: Any]()
}

如果 Alamo 的结果是 nildic 将是空的,而不是 nil?? 运算符可以写成:

if result == nil {
    dic = [String: Any]()
} else {
    dic = result!
}