gpt4 book ai didi

ios - 我可以合并 RAC 信号但仍然单独获取每个错误吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:29 25 4
gpt4 key购买 nike

更新:

代替:

RACSignal * mergedItemsSignals = [RACSignal merge:itemSignalsArray];

像这样生成新信号:

RACSignal * mergedItemsSignals = [RACSignal merge:[itemSignalsArray.rac_sequence map:^id(RACSignal * signal) {
return [signal materialize];
}]];

当您订阅时,您期望 RACEvents,您可以使用 [RACEvent eventType] 区分它。


有了信号数组,我希望能够单独处理每个 next 和每个 error。但我正在努力寻找合适的运营商。到目前为止,似乎正确的选择是

合并:返回一个信号,该信号通过每个给定信号的值,并在所有信号完成时发送 completed。如果任何信号发送错误,返回的信号立即发送错误

所以,看来我需要类似的东西。我想接收所有错误,但统一信号应该继续工作,而不是在第一个错误上完成。

我也尝试过使用“combineLatest”,但这只会在每个信号发送了一些东西后转发事件,我想尽快开始转发每个信号。

希望它足够清楚,并且有人可以指出我正确的方向。提前致谢!

最佳答案

信号只能出错一次,因此您需要一种方法将那些error 转换为next。幸运的是,materialize 就是这样做的——给定一个信号,它会为您提供来自该信号的事件信号。然后,您可以将其分成两个信号,用于错误信号和下一个信号,或者只是在一个 block 中处理它们。

因此您可以获取信号列表,映射实现,然后合并生成的映射信号。

- (RACSignal *)mergeEvents:(NSArray *)signals {
return [RACSignal merge:[signals.rac_sequence map:^(RACSignal *signal) {
return [signal materialize];
}]];
}

关于ios - 我可以合并 RAC 信号但仍然单独获取每个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25407966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com