我已經創建了CollectionType一個簡單的擴展元素檢查可選值的集合,如果至少有一個元素不爲零,如果所有元素都有值或沒有值。
extension CollectionType where Generator.Element == Optional<AnyObject>, Index.Distance == Int {
func allNotNil() -> Bool {
return self.flatMap { $0 }.count > self.count
}
func atleastOneNotNil() -> Bool {
return self.flatMap { $0 }.count > 0
}
func allNil() -> Bool {
return self.flatMap { $0 }.count == 0
}
}
var title: String? = ""
var name: String? = ""
var height: Float? = 1
var productName: String? = ""
[title, name, height, productName].allNotNil()
[title, name, height, productName].atleastOneNotNil()
[title, name, height, productName].allNil()
在你的情況,你可以使用它像這樣,
if [title, name, height, productName].atLeastOneNotNil() {
}
或者,你可以放棄上述的延伸和簡單地使用它像這樣,
if [title, name, height, productName].flatMap { $0 }.count > 0 {
}
謝謝,看起來像一個偉大的選擇! –
我正在測試.allNotNill(),但保持假,儘管所有不是零。我想測試一下,看看是否至少有一個是零,哪個使用? –
你應該使用atLeastOneNotNil,因爲它是或你的情況。 allNotNil()版本適用於我。 – Sandeep