我一直在使用嵌套的iflet(s(来检查nils。例如,一个包含名称和年龄的类
class Person {
var name: String?
var age: Int?
}
if let p = Person() as? Person {
if let name = p.name {
}
if let age = p.age {
}
}
当我不确定变量是否为空/null时,是否有必要在所有和每次上使用if let?只是想确定我做得对不对。
只有在需要检查nil
并使用展开的值时,才需要if-let
。否则,您可以使用!=
或==
运算符简单地检查nil
。
此外,不需要使用as? Person
显式地对p
到Person
进行类型转换,因为类型已经可以推断了。
let p = Person()
if p.name != nil {
}
if p.age != nil {
}
您不需要检查任何
p = Person()
创建一个没有初始值的新Person对象意味着所有属性都为nil,因此不需要进行以下检查,我们已经知道它们为nil
if let name = p.name {
if let age = p.age {
我建议你添加一个带参数的构造函数,这样你就可以直接设置属性
要么有强制值,这样你就不必在之后检查零
init(name: String, age: Int) {
self.name = name
self.age = age
}
或具有可选值
init(name: String?, age: Int?) {
self.name = name
self.age = age
}
但是你需要检查
var name: String?
var age: Int?
//...other code
let p = Person(name: name, age: age)
if let personName = p.name {
}
if let personAge = p.age {
}