简体   繁体   English

如何从订阅的RACSignal获取错误值?

[英]How to get error value from a subscribed RACSignal?

For example: 例如:

In one controller, implementation 在一个控制器中,实现

func sendSuccessOrNot()->RACSignal {
// code here
}

In another controller, calling that signal 在另一个控制器中,调用该信号

controller.sendSuccessOrNot().subscribeNext {

}

how to check in the above calling if sendSuccessOrNot is sending error or success value in ReactiveCocoa. 如何检查以上调用是否sendSuccessOrNot在ReactiveCocoa中发送错误或成功值。

The syntax you use makes me think you're using Swift, in which case you shouldn't be using RACSignal, you should be converting your RACSignal to a SignalProducer with .toSignalProducer() 您使用的语法使我觉得您正在使用Swift,在这种情况下,您不应该使用RACSignal,应该使用.toSignalProducer()将RACSignal转换为SignalProducer

func sendSuccessOrNot() -> RACSignal {
    return RACSignal.createSignal { (subscriber) -> RACDisposable! in
        let test = true
        if (test) {
            subscriber.sendNext("Value")
            subscriber.sendCompleted()
        } else {
            subscriber.sendError(NSError(domain: "", code: 0, userInfo: nil))
        }
        return RACDisposable(block: {})
    }
}

controller.sendSuccessOrNot().toSignalProducer().on(next: { value in
    print("next: \(value)")
}, 
failed: { error in
    print("failed: \(error)")
}).start()

If you're still using RAC 2 then it'd be 如果您仍在使用RAC 2,那么它将是

controller.sendSuccessOrNot().subscribeNext({ value in
    print("next: \(value)")
}, error: { error in
    print("failed: \(error)")
})    

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

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