操作符
在 Combine 框架中,操作符(Operators)用于处理和变换发布者(Publishers)发出的值。常见的操作符可以按功能分为几类,以下是一些主要类型的操作符:
1. 创建发布者(Creating Publishers)
2. 变换操作符(Transformation Operators)
map
: 转换发布者发出的值。compactMap
: 转换发布者发出的值,忽略nil
值。flatMap
: 将每个发布的值映射为一个新的发布者。tryMap
: 对发布的值进行转换,并捕获错误。scan
: 累积每个发布的值。reduce 多个值合并为一个单一的值
3. 过滤操作符(Filtering Operators)
filter
: 过滤发布者发出的值,保留符合条件的值。tryFilter
: 对发布的值进行条件判断,并捕获错误。 类似map中的trymapremoveDuplicates
: 移除连续相同的值。ignoreOutput
: 忽略发布者发出的所有值,仅关心完成或失败事件。first / last:只获取序列中的第一个或最后一个值。
dropFirst:跳过序列中的前几个值。
prefix:限制序列的最大值数量。
4. 合并和组合操作符(Combining and Merging Operators)
merge
: 将多个发布者合并为一个。combineLatest
: 等待多个发布者都发出一个值时,合并这些值。zip
: 将两个发布者的输出按顺序配对。switchToLatest
: 订阅一个发布者,并且当其发出新的发布者时切换订阅到新发布者。
5. 调度和延迟操作符(Timing and Scheduling Operators)
6. 订阅操作符(Subscription Operators)
catch
: 捕获并处理发布者的错误。tryCatch
: 捕获并处理错误,但允许抛出错误。retry
: 在失败后尝试重新订阅发布者。tryRetry
: 尝试重新订阅并捕获错误。
print
: 打印发布者发出的值和事件。handleEvents
: 在发布者的生命周期中捕获并处理事件(如订阅、接收值、完成或失败)。
share: 多个订阅者订阅同一个数据流
multicast: 更精细控制的场景
10. 序列运算符(Sequence Operators)
collect:收集多个值并一次性发送。
allSatisfy:检查序列中的所有值是否满足条件。
contains:检查序列中是否包含指定值。
封装擦除
eraseToAnyPublisher:检查序列中的所有值是否满足条件
Last updated