나는 ReactiveCocoa/ReactiveSwift에서 꽤 많은 멍청하다. 두 개의 SignalProducers가 있습니다. 첫 번째 SignalProducer가 nil을 반환하면, 그렇지 않으면 두 번째 Signal Producer를 실행하고 싶습니다. 나는이 문서를 읽었지만 어떤 문법이 이런 식으로 일하는 데 도움이되는지 확신 할 수 없다. 어떤 도움을 주셔서 감사합니다.반응성 코코아 5 또는 6을 사용하여 신호 생성자 또는 신호 생성자 시퀀스를 연결하는 방법은 무엇입니까?
0
A
답변
1
그래,이 값이 0이 아닌 한 첫 번째 SignalProducer에서 값을 가져 오려고합니다. 그런 다음 두 번째 SignalProducer에서 값을 가져 오려고합니다. 이런 식으로 표현한 경우, 이미 당신이 필요로하는 사업자를 알려줍니다 : take(while:)
및 then
을 :
let producerA: SignalProducer<Int?, NoError>
let producerB: SignalProducer<Int?, NoError>
...
producerA
.take(while: { $0 != nil })
.then(producerB)
take(while:)
운영자 것이다 단지 앞으로 모든 이벤트를 한 주어진 블록이 true를 반환한다. 따라서이 경우 이벤트가 없으면 블록은 false를 반환하고 결과로 나오는 SignalProducer가 완료됩니다.
then
운영자는 점 producerB
가 시작되고 지금 producerB
의 이벤트가 전달되는 producerA
이 완료 될 때까지 producerA
이벤트를 전달합니다.
"returns nil"은 무엇을 의미합니까? 첫 번째 SignalProducer가 값이 nil 인 이벤트를 보내는 것을 의미합니까? 아니면 전혀 이벤트를 보내지 않고 종료한다는 의미입니까? – MeXx
첫 번째 제작자는 nil @MeXx 값을 가진 이벤트를 보냅니다. – coolly