Zor*_*ayr 2 swift swift5 combine
我有一个CurrentValueSubject这是一个数组ChatModelFirebase。我想要做的是删除所有ChatModelFirebase状态字段为“已取消”的模型。问题是,当我应用.filter(..)运算符时,它作用于整个数组而不是单个项目。
var chatFirebaseModels: CurrentValueSubject<[ChatModelFirebase], Never> = CurrentValueSubject([])
chatFirebaseModels
.filter({ (chatModelFireBaseArray) -> Bool in
// I want individual array items, not chatModelFireBaseArray
return false
})
Run Code Online (Sandbox Code Playgroud)
下面是代码完成的样子:
您可以看到它.filter(..)应用于[ChatModelFirebase]数组而不是单个ChatModelFirebase模型。
这里的答案只是使用.flatMap(..)吗?我很好奇是否有正确的使用方法.filter(...),因此我的问题。
您可以使用.map返回过滤后的数组:
chatFirebaseModels
.map { array in
array.filter { element in
// ... filter by element
}
}
Run Code Online (Sandbox Code Playgroud)
或者使用纯组合链(尽管看起来不必要地复杂):
chatFirebaseModels
.flatMap { Publishers.Sequence(sequence: $0) }
.filter { element in
// ... filter by element
}
.collect()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |