使用Swift 3
想知道是否有任何方法可用于检查对象中的所有属性是否都具有value / nil
例如:
class Vehicle {
var name : String?
var model: String?
var VIN: String?
}
let objCar = Vehicle()
objCar.name = "Volvo"
if objCar.{anyProperty} ! = nil {
//Go to other screen
}
我正在搜索{anyProperty}方法,只有当我拥有objCar的所有属性的值时,它才会返回true。
请指教
4条答案
按热度按时间6qfn3psc1#
我不确定这是否应该用于生产应用程序,因为我不太熟悉Swift中的反射(使用
Mirror
),以及它是否有任何负面影响(性能等)。下面是:
在上面的例子中,
hasMissingValues
将为false(设置了Vehicle
的所有属性)。例如,注解设置了model
的行,hasMissingValues
的值现在将为true。注意:可能有一个更好的方法来比较
$0.value
(Any
类型)和nil。而且,这适用于类的任何类型(不仅仅是String
)的属性。qncylg1j2#
我强烈建议不要这样做。状态验证应该在类内部进行。在类内部,你应该更好地知道如何检查有效性。
如果
isReadyToAdvance()
有不同规则的子类,它们可以覆盖该方法。如果
isReadyToAdvance()
对于基类没有意义,那么将其作为扩展添加。@iPeter要求在有很多属性的情况下更紧凑一些。
bq3bfh9z3#
如果你有很多字段,你可以使用这种方法:
a8jjtwal4#
这个问题的最佳解决方案是