且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

检查对象中的任何属性是否为nil-Swift 3

更新时间:2022-04-13 19:34:42

我强烈建议不要这样做.状态验证是应该在类内部进行的.从班级内部,您应该更好地了解如何检查有效性.

I would strongly recommend against this. State validation is something which should happen from inside a class. From inside the class, you should know better how to check validity.

class Vehicle {
    var name: String?
    var model: String?
    var VIN: String?

    func isReadyToAdvance() -> Bool {
        return name != nil && model != nil && VIN != nil
    }
}

let objCar = Vehicle()
objCar.name = "Volvo"

if objCar.isReadyToAdvance() {
    // Go to other screen
}

如果对于isReadyToAdvance(),存在具有不同规则的子类,则它们可以覆盖该方法.

If there are subclasses with different rules for isReadyToAdvance() they can override that method.

如果isReadyToAdvance()对基类没有意义,则将其添加为扩展.

If isReadyToAdvance() doesn't make sense for the base class, then add it as an extension.

extension Vehicle {
    func isReadyToAdvance() -> Bool {
        return name != nil && model != nil && VIN != nil
    }
}


@iPeter在属性很多时要求更紧凑的东西.


@iPeter asked for something a bit more compact when there are lots of properties.

extension Vehicle {
    func isReadyToAdvance() -> Bool {
        // Add all the optional properties to optionals
        let optionals: [Any?] = [name, model, VIN]
        if (optionals.contains{ $0 == nil }) { return false }

        // Any other checks

        return true
    }
}