RAC命令混乱
RACCommand Confusion
我正在尝试在我的 PasswordResetViewController 上使用 RACCommand
。在我的 viewDidLoad
中,我有以下内容:
sendButtonItem = UIBarButtonItem(title: "Reset Password", style: .Done, target: self, action: nil)
var emailIsValid = textField.rac_textSignal().map { text -> AnyObject! in
return count((text as! String)) > 0
}
let passwordResetSignal = RACSignal.createSignal { (subscriber) -> RACDisposable! in
User.requestPasswordResetForEmailInBackground(self.textField.text) { success, error in
if success {
subscriber.sendNext(success)
subscriber.sendCompleted()
} else {
subscriber.sendError(error)
}
}
return nil
}
sendButtonItem.rac_command = RACCommand(enabled: emailIsValid) { (input) in
return passwordResetSignal
}
sendButtonItem.rac_command.executionSignals.subscribeError { (error) -> Void in
println("ERROR!")
}
sendButtonItem.rac_command.executionSignals.subscribeNext { (success) -> Void in
println("SUCCESS!")
}
navigationItem.rightBarButtonItem = sendButtonItem
rightBarButtonItem
enables/disables 如我所料,但我没有收到任何下一个或错误事件。
executionSignals
是一个 信号中的一个信号 。换句话说:每次执行命令时,它都会发送命令的 signal(在您的例子中,passwordResetSignal
)作为其下一个值。
如果您想订阅从 passwordResetSignal
发送的值,请使用 switchToLatest
:
sendButtonItem.rac_command.executionSignals.switchToLatest().subscribeNext { (success) -> Void in
println("SUCCESS!")
}
RACCommand
中有一个单独的信号 errors
可用于订阅从执行信号接收到的错误(注意:错误作为 next
值发送):
sendButtonItem.rac_command.errors.subscribeNext { (error) -> Void in
println("ERROR!")
}
我正在尝试在我的 PasswordResetViewController 上使用 RACCommand
。在我的 viewDidLoad
中,我有以下内容:
sendButtonItem = UIBarButtonItem(title: "Reset Password", style: .Done, target: self, action: nil)
var emailIsValid = textField.rac_textSignal().map { text -> AnyObject! in
return count((text as! String)) > 0
}
let passwordResetSignal = RACSignal.createSignal { (subscriber) -> RACDisposable! in
User.requestPasswordResetForEmailInBackground(self.textField.text) { success, error in
if success {
subscriber.sendNext(success)
subscriber.sendCompleted()
} else {
subscriber.sendError(error)
}
}
return nil
}
sendButtonItem.rac_command = RACCommand(enabled: emailIsValid) { (input) in
return passwordResetSignal
}
sendButtonItem.rac_command.executionSignals.subscribeError { (error) -> Void in
println("ERROR!")
}
sendButtonItem.rac_command.executionSignals.subscribeNext { (success) -> Void in
println("SUCCESS!")
}
navigationItem.rightBarButtonItem = sendButtonItem
rightBarButtonItem
enables/disables 如我所料,但我没有收到任何下一个或错误事件。
executionSignals
是一个 信号中的一个信号 。换句话说:每次执行命令时,它都会发送命令的 signal(在您的例子中,passwordResetSignal
)作为其下一个值。
如果您想订阅从 passwordResetSignal
发送的值,请使用 switchToLatest
:
sendButtonItem.rac_command.executionSignals.switchToLatest().subscribeNext { (success) -> Void in
println("SUCCESS!")
}
RACCommand
中有一个单独的信号 errors
可用于订阅从执行信号接收到的错误(注意:错误作为 next
值发送):
sendButtonItem.rac_command.errors.subscribeNext { (error) -> Void in
println("ERROR!")
}