给可选变量赋值

时间:2019-05-13 04:10:53

标签: swift optional

我要像下面这样设置字典值。

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"

有什么简而言之可以用来为可选变量设置值的方法吗?

2 个答案:

答案 0 :(得分:2)

已阅读注释,下面的解决方案可能就是您想要的。

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

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

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

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

答案 1 :(得分:1)

我认为您应该更新代码,不要在viewcontroller中使用直接字典。在模型中设置可选变量。并且当您使用这些值时,将其用于条件检查,例如,让值= somethingOptional {}

或在您的API调用函数中使用防护,因此如果您从API中获取值为null,则它将永远不会更新或影响任何视图