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之上-