Swift 在RAC 3+中使用CombineTest和UITextFields;

Swift 在RAC 3+中使用CombineTest和UITextFields;,swift,uitextfield,reactive-cocoa-3,Swift,Uitextfield,Reactive Cocoa 3,我想简单地“组合”一些文本字段发出的信号,并触发一段代码。使用combinelatetest()或值:SignalProducer初始值设定项等方法,似乎有几种“应该”起作用的方法。但我无法得到任何编译或功能的预期 RAC文档使用以下示例 combineLatest(numbersSignal, lettersSignal) |> observe(next: println, completed: { println("Completed") }) 但我无法编译这种用法 我可以使用冗

我想简单地“组合”一些文本字段发出的信号,并触发一段代码。使用
combinelatetest()
值:
SignalProducer初始值设定项等方法,似乎有几种“应该”起作用的方法。但我无法得到任何编译或功能的预期

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\u textsignal
本身。这是“编译”的,但除非创建并启动了生产者,否则信号中似乎没有发送任何内容


这个问题/答案也有效,但似乎仍然是一个解决办法,并没有解释为什么需要创建信号生成器,而不是观察原始的
rac_textSignal()
s

观察
rac_textSignal
而不进行转换是可能的,我们只需要澄清这一点。RACSignal是反应可可2.0信号,与Objective-C版本相关。因此,您需要对此类信号应用RAC2运算符,
combineLatestWith:
可以帮助您解决此类任务


由于RAC3基本概念中的差异,应用Swift运算符需要进行转换。在RAC2中,这样的核心实体是
RACSignal
,而不是RAC3中的
Signal
SignalProducer

Ah,我没有意识到RAC2的结构仍然在RAC3中。这是有道理的。使用RAC3的
Signal
SignalProducer
是否有合适的方法来实现相同的功能?或者是否需要创建扩展来从文本字段获取
信号
,而不是
RACSignal
?@MichaelBopp,早期的RAC 3.0版本将没有UIKit扩展(这里有更多信息)。您可以尝试搜索RAC扩展框架,它构建在其中一个ReactiveCocoa之上-