我想簡單地「組合」由多個文本字段發出的信號並激發一段代碼。似乎這種「應該」使用combineLatest()
或SignalProducer初始化程序等方法工作的方法有幾種。但我無法獲得任何預期的編譯或功能。在RAC 3+中使用combineLatest和UITextFields
RAC單證使用下面的例子
combineLatest(numbersSignal, lettersSignal)
|> observe(next: println, completed: { println("Completed") })
但我不能夠編譯這種用法
我能夠做有冗餘塊以下...
locationTextfield.rac_textSignal().toSignalProducer()
|> start(next: { txt in
println(txt)
})
aircraftTextfield.rac_textSignal().toSignalProducer()
|> start(next: { txt in
println(txt)
})
我也不明白爲什麼我需要使用toSignalProducer()
並開始而不是僅僅觀察rac_textsignal
本身。這個「編譯」,但似乎沒有發送信號,除非生產者被創建和啓動。
這個問題/答案ReactiveCocoa combine SignalProducers into one也可以,但是似乎仍然像周圍的工作,並沒有解釋爲什麼信號生產商需要創造,而不是觀察原rac_textSignal()
小號
啊,我沒有意識到RAC2的結構仍然在RAC3中。這就說得通了。有沒有一種合適的方法可以使用RAC3的'Signal'和'SignalProducer'完成相同的功能?或者需要創建擴展來從文本字段獲取'Signal',而不是'RACSignal'? –
@MichaelBopp,早期RAC 3.0版本將沒有UIKit擴展(更多關於這裏https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2074)。您可以嘗試搜索建立在ReactiveCocoa頂部的RAC Extensions框架,其中之一 - https://github.com/neilpa/Rex – skyylex