繁体   English   中英

反应性可可粉-然后在自定义信号与UI信号上

[英]Reactive Cocoa - then on custom signal vs UI signal

我开始使用活性可可粉,因此我编写了一个小测试以了解我是否理解然后构造。 目标是仅在发送某些信号后才将文本从文本字段输出到标签。 我已经尝试过rac_signalForControlEvents(UIControlEvents.TouchUpInside)和非常简单的自定义信号。 前者甚至不调用然后关闭,而后者确实按预期工作。 这里有什么问题?

func someSetupFunction()
{
#if true
    // Why does this doesn't work?

    button.rac_signalForControlEvents(UIControlEvents.TouchUpInside).then
        {
            let strongSelf = weakSelf
            return strongSelf?.textField.rac_textSignal()
        }.subscribeNext
        { object in
            let strongSelf = weakSelf
            strongSelf?.label.text = object as! String! + " - 0"
        }
#else
    // ... but this does?

    customSignal().then
        {
            let strongSelf = weakSelf
            return strongSelf?.textField.rac_textSignal()
        }.subscribeNext
        { object in
            let strongSelf = weakSelf
            strongSelf?.label.text = object as! String! + " - 1"
        }
#endif
}

func customSignal() -> RACSignal
{
    return RACSignal.createSignal
        { subscriber in
            subscriber.sendNext(nil)
            subscriber.sendCompleted()
            return nil
        }
}

从文档然后

忽略接收方的所有下一个,等待接收方完成,然后订阅新信号。

button.rac_signalForControlEvents未完成(至少没有在单击按钮时完成),这就是为什么什么也没有发生的原因。

iv-mexx的原始答案可以在https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2671中找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM