Swift 4:有没有比本教程更简洁的方法来检查nil?

时间:2018-04-18 15:07:55

标签: swift

刚刚在这里学习,但有一个更好的方法来编写下面的代码,因为在这个课程中我有102个数据点,我真的不希望每个都是3个班轮。我在谷歌发现的例子中使用了let或var,而我无法找到任何自我。

if snap["id"] !== nil {
   self.id = snap["id"] as! Int
}

2 个答案:

答案 0 :(得分:0)

您可以检查值是否为零:

if let id = snap["id"] as? Int {
    // if this gets executed, id is not nil
}

甚至喜欢这个

guard let id = snap["id"] as? Int else {
    // in case this executes, id is nil
    return
}

// From here on, you can use id constant, it's value is not nil

如果您使用的是第二个代码,如果snap [“id”]为nil,则代码将返回,并且返回后的任何内容都不会被执行。这取决于使用哪种代码的情况,两种方式都是可能的。

修改 如果你仍然需要使用变量,你可以为它分配一些默认值,如果它是nil:

let id = snap["id"] as? Int ?? 0 // in this case, if "id" is nil, we assign a value of 0

答案 1 :(得分:0)

如果您想保留原始值,如果字典中的值为nil,您可以简单地:

self.id = (snap["id"] as? Int) ?? self.id

(dict["id"] as? Int).map { self.id = $0 }