我刚刚了解了 swift 中的 map、flatMap 和 reduce 的奇妙世界,并且我已经在任何有意义的地方使用它,并有助于改进我的代码。
现在我遇到了一个非常特殊的问题,我想知道是否有使用map、flatMap和/或reduce的解决方案。
在我的模型类中,我有一个可选的其他模型数组。这些模型有一个可选的 Bool 属性。我现在想知道整个模型数组是否至少包含一个具有真实属性的模型。这就是我目前正在做的事情:
class ModelA{
var bModels: [ModelB]?
}
class ModelB{
var aBool: Bool?
}
func hasATrue(aModel: ModelA) {
guard let bModels = aModel.bModels else { return false }
for bModel in bModels {
if bModel.aBool == true {
return true
}
}
return false
}
最佳答案
您可以通过可选链接、Array.contains(where:)
和 nil 合并在单个表达式中完成这一切。
func hasATrue(aModel: ModelA) {
return aModel.bModels?.contains(where: { $0.aBool == true }) ?? false
}
关于Swift:通过可选属性将可选模型数组减少为单个 Bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43918284/